您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

找出celery任务是否存在

找出celery任务是否存在

发送任务时,Celery不会写状态,这部分是一种优化(请参阅http://docs.celeryproject.org/en/latest/userguide/tasks.html#state)。

如果您确实需要它,添加起来很简单:

from celery import current_app
# `after_task_publish` is available in celery 3.1+
# for older versions use the deprecated `task_sent` signal
from celery.signals import after_task_publish

# when using celery versions older than 4.0, use body instead of headers

@after_task_publish.connect
def update_sent_state(sender=None, headers=None, **kwargs):
    # the task may not exist if sent using `send_task` which
    # sends tasks by name, so fall back to the default result backend
    # if that is the case.
    task = current_app.tasks.get(sender)
    backend = task.backend if task else current_app.backend

    backend.store_result(headers['id'], None, "SENT")

然后,您可以测试PENDING状态,以检测是否已(似乎)未发送任务:

>>> result.state != "PENDING"
其他 2022/1/1 18:26:45 有468人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶