Celery:重新启动工作程序后未处理“ task_revoked”信号

时间:2018-11-19 14:56:54

标签: python celery

我有一个长期的任务:

from celery import Celery
celery_app = Celery( 'myapp' )

 # ...

@celery_app.task()
def myTask( *args, **kwargs ) :
   # the task body

附加了task_revoked处理程序:

from celery.signals import task_revoked

@task_revoked.connect ( sender=myTask, dispatch_uid="myTask" )
def revokeHandler( *args, request=None, **kwargs ) :
   # the handler body

如果我启动任务然后正常将其撤消,则处理程序工作正常:

job_uuid = myTask.delay( *args, **kwargs )
 # ...
res = AsyncResult( job_uuid )
res.revoke( terminate=True, signal='SIGKILL' )
res.forget()

但是如果我首先启动任务,然后重新启动celery worker(任务在重新启动后仍然存在),然后取消该处理程序,则不会被调用

有办法使它工作吗?

在Python 3.4.3上将Celery 4.1.1与RabbitMQ服务器3.2.4结合使用

0 个答案:

没有答案