为什么芹菜不能在Django中并行执行



我的芹菜有问题,我将用代码进行解释

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=preforkworker_concurrency=<nr of CPUs>

如果它运行的机器只有一个CPU,你就不会得到任何并行运行的任务。

要获得并行化,您可以:

  1. worker_concurrency设置为某个>1,这将在同一工作者中使用多个进程
  2. 增加工人
  3. 用芹菜多启动多个工人
  4. 在docker容器中运行工作程序时,添加容器的副本

有关详细信息,请参阅并发。

最新更新