Django芹菜任务执行

时间:2014-11-05 11:18:50

标签: django celery-task

当恶魔只执行一个任务时,我在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 )。

1 个答案:

答案 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

等等。

一个工作人员可以处理您的所有任务,但是两个工作人员可以更快地完成任务。