2014-06-10 59 views
1

我为芹菜结果添加了一个后端,并且我遇到了一个问题,我发送任务,一些接受而另一些不接受。芹菜未能接受任务

任务是和不执行都显示此日志输出:

[2014-06-09 15:50:59,093: DEBUG/MainProcess] Task accepted: tasks.multithread_device_listing[e3ae6d12-ad4b-4114-9383-5802c91541f2] pid:2810 

虽然未执行的任务永远不会到来:被执行的则显示此输出

[2014-06-09 15:50:59,091: INFO/MainProcess] Received task: tasks.multithread_device_listing[e3ae6d12-ad4b-4114-9383-5802c91541f2] 

问鼎在上面的路线。

我如何发送任务:

from celery import group 
from time import sleep 


signatures = [] 
signature = some_method_with_task_decorator.subtask() 
signatures.append(signature) 
signature = some_other_method_with_task_decorator.subtask() 
signatures.append(signature) 
job = group(signatures) 
result = job.apply_async() 
while not result.ready(): 
    sleep(60) 

从拥有它举报我的芹菜配置为:

software -> celery:3.1.11 (Cipater) kombu:3.0.18 py:2.7.5 
       billiard:3.3.0.17 py-amqp:1.4.5 
    platform -> system:Darwin arch:64bit imp:CPython 
    loader -> celery.loaders.app.AppLoader 
    settings -> transport:amqp results:amqp://username:[email protected]:5672/automated_reports 

    CELERY_QUEUES: 
     (<unbound Queue automated_reports -> <unbound Exchange default(direct)> -> automated_reports>,) 
    CELERY_DEFAULT_ROUTING_KEY: '********' 
    CELERY_INCLUDE: 
     ('celery.app.builtins', 
    'automated_reports.queue.tasks', 
    'automated_reports.queue.subtasks') 
    CELERY_IMPORTS: 
     ('automated_reports.queue.tasks', 'automated_reports.queue.subtasks') 
    CELERY_RESULT_PERSISTENT: True 
    CELERY_ROUTES: { 
     'automated_reports.queue.tasks.run_device_info_report': { 'queue': 'automated_reports'}, 
     'uploader.queue.subtasks.multithread_device_listing': { 'queue': 'automated_reports'}, 
     'uploader.queue.subtasks.multithread_individual_device': { 'queue': 'automated_reports'}, 
     'uploader.queue.tasks.multithread_device_listing': { 'queue': 'automated_reports'}, 
     'uploader.queue.tasks.multithread_individual_device': { 'queue': 'automated_reports'}} 
    CELERY_DEFAULT_QUEUE: 'automated_reports' 
    BROKER_URL: 'amqp://username:********@localhost:5672/automated_reports' 
    CELERY_RESULT_BACKEND: 'amqp://username:[email protected]:5672/automated_reports' 

我的启动命令是:

~/Documents/Development/automated_reports/bin/celery worker --loglevel=DEBUG --autoreload -A automated_reports.queue.tasks -Q automated_reports -B --schedule=~/Documents/Development/automated_reports/log/celerybeat --autoscale=10,3 

此外,当我停止芹菜,它将任务排除在我的队列之外,从未被接受。然后当我重新启动时,它接受它们并执行它们。

任何与此行为的帮助,非常感谢。我确定它与我的后端配置有关,但我很难隔离问题或纠正。谢谢!

回答

1

我找到了答案。

我注意到'inqueue'似乎在某些情况下可以正确接收任务,但不是其他人。当我搜索芹菜文档时,我发现这个提示:http://celery.readthedocs.org/en/latest/whatsnew-3.1.html?highlight=inqueue#caveats

我正在执行长期运行任务中的子任务,所以这听起来非常像我看到的行为。此外,我在提到的版本,而在以前的版本,我没有这个问题与相同的配置。

我添加了-Ofair参数来启动worker,并立即解决了这个问题。