我的芹菜有问题,我将用代码进行解释
def samplefunction(request):
print("This is a samplefunction")
a=5,b=6
myceleryfunction.delay(a,b)
return Response({msg:" process execution started"}
@celery_app.task(name="sample celery", base=something)
def myceleryfunction(a,b):
c = a+b
my_obj = MyModel()
my_obj.value = c
my_obj.save()
在我的情况下,一个人称芹菜为,它将完美工作
如果许多人通过了请求,它将逐一处理
所以想象一下,我的芹菜功能";mycleryfunction";花3分钟完成后台任务。
因此,如果10个请求同时到来,最后一个需要30分钟的延迟才能完成输出
如何解决这个问题或任何其他选择。
谢谢
我假设您运行的是一个具有默认设置的工作者。这将使工作程序运行worker_pool=prefork
和worker_concurrency=<nr of CPUs>
如果它运行的机器只有一个CPU,你就不会得到任何并行运行的任务。
要获得并行化,您可以:
- 将
worker_concurrency
设置为某个>1,这将在同一工作者中使用多个进程 - 增加工人
- 用芹菜多启动多个工人
- 在docker容器中运行工作程序时,添加容器的副本
有关详细信息,请参阅并发。