我試圖連接到這裏描述的芹菜信號:
http://docs.celeryproject.org/en/latest/userguide/signals.html
我可以連接到task_sent信號沒有問題。芹菜:事件==信號?
但是,當我嘗試連接到task_success或task_postrun,沒有任何反應。 對於我的經紀人和我的後端,我正在使用postgres sql。
我試圖理解爲什麼它不工作
有一件事我想知道從這裏載文:
http://docs.celeryproject.org/en/latest/getting-started/brokers/sqlalchemy.html#broker-sqlalchemy
它說:
限制:活動,包括Django Admin監視器。
目前還不清楚他們是否說事件,它們是指信號。
請幫忙。
tasks.py
from celery import Celery
from celery.signals import task_sent, task_success, task_postrun
import celeryconfig
celery_config_dict = {** stuff **}
celery = Celery('tasks',)
celery.add_defaults(celery_config_dict)
@celery.task
def add(x, y):
return x + y
@task_sent.connect
def task_sent_handler(sender=None, task_id=None, task=None, args=None, kwargs=None, **kwds):
print(''' Task Sent!
sender: %s
task_id: %s
task: %s
args: %s
kargs: %s
kwds: %s''' % ( sender,
task_id,
task,
args,
kwargs,
kwds))
@task_success.connect
def task_success_handler(sender=None, result=None, args=None, kwargs=None, **kwds):
print(''' Success!
sender:%s
result:%s
args:%s
kwargs:%s
kwds:%s''' % (sender, result, args, kwargs, kwds))
@task_postrun.connect
def task_postrun_handler(sender=None, task_id=None, task=None, args=None, kwargs=None, retval=None, state=None, **kwds):
print(''' Done!
sender: %s
task_id: %s
task: %s
retval: %s
state: %s
args:%s
kwargs:%s
kwds:%s''' % (sender, task_id, task, retval, state, args, kwargs, kwds,))
在Python解釋器
>>> import tasks
>>> r = tasks.add.apply_async((3,8), countdown=10)
Task Sent!
sender: tasks.add
task_id: None
task: tasks.add
args: (3, 8)
kargs: {}
kwds: {'utc': True, 'chord': None, 'retries': 0, 'signal': <Signal: Signal>, 'expires': None, 'callbacks': None, 'errbacks': None, 'taskset': None, 'eta': '2013-02-01T01:43:35.978889', 'id': '87c8d0f4-ae67-4c3d-9e94-45e99cf6304a'}
>>>
好的謝謝。這就說得通了。你能幫我描述一下如何使用這些信號嗎?我不明白我會如何接線。 –
ahh沒關係,我現在看到芹菜服務器芹菜控制檯輸出中發生的事件(我沒有啓動芹菜作爲守護進程,所以我可以看到所有的輸出)好吧,我想我明白這是如何工作的。謝謝! –