Je suis en train de me connecter aux céleri singal qui sont décrits ici:
http://docs.celeryproject.org/en/latest/userguide/signals.html
Je peux me connecter au signal task_sent pas de problème. Mais quand j'essaye de me connecter à task_success ou à task_postrun, rien ne se passe. Pour mon courtier et mon backend, j'utilise postgres sql.céleri: événements == signaux?
Je suis en train de comprendre pourquoi il ne fonctionne pas
Une chose que je me posais la question de la documentaiton ici:
http://docs.celeryproject.org/en/latest/getting-started/brokers/sqlalchemy.html#broker-sqlalchemy
Il dit:
Limitations: Événements, y compris le moniteur d'administration Django.
Il n'est pas clair si, quand ils disent événement, ils signifient signaux.
Aide s'il vous plaît.
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,))
dans l'interpréteur 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'}
>>>
ok merci. ça a du sens. Pouvez-vous m'aider à décrire ou à me montrer un exemple d'utilisation de ces signaux? Je ne comprends pas comment je vais câbler ça. –
ahh ça ne fait rien, je vois les événements qui se déclenchent dans la sortie de la console céleri du serveur céleri maintenant (je n'ai pas démarré le céleri comme démon donc je peux voir toutes les sorties) ok je crois comprendre comment ça fonctionne maintenant. Merci! –