当恶魔只执行一个任务时,我在tasks.py文件中有3个任务。其余两个在调试模式下显示但不执行。
celery worker --concurrency=1
是否需要更改?
编辑:
@celery.decorators.periodic_task(run_every=datetime.timedelta(minutes=1))
def task1():
try:
sc = SampleCount.objects.get(pk=1)
except:
sc = SampleCount()
sc.num = sc.num + 1
sc.save()
return(sc)
相同 task2 ,用于将数据添加到SampleCount2(minute=2)
和 task3 ,以便将数据添加到SampleCount3(分钟= 3)。
现在我跑
python manage.py celeryd -E -B --loglevel=DEBUG
所以它会显示3个任务。但是当我检查状态时,其显示只有1 task1 处于活动状态。没有其他两个在预定。如果我运行
python manage.py celeryd -E -B --loglevel=DEBUG
再次命令然后 task3 处于活动状态,其余两个不起作用。如何使用一个worker运行三个任务。
我等到10分钟,但只有一项任务正在运行(可能是 task1 ,或 task2 或 task3 )。
答案 0 :(得分:0)
这取决于服务器上可用的资源。
没有这样的要求,任务数量必须等于工人数量。唯一需要理解的是:
工作人员越多,处理所有任务的速度就越快,但需要更多的服务器资源。
此命令:
celery worker --concurrency=1
将产生两个进程
1. Control process, that will manage workers
2. worker process, the one, that will actually do the job
这个命令:
celery worker --concurrency=2
将产生三个进程
1. Control process, that will manage workers
2. worker process #1, the one, that will actually do the job
2. worker process #2, the one, that will actually do the job
等等。
一个工作人员可以处理您的所有任务,但是两个工作人员可以更快地完成任务。