gpt4 book ai didi

python - 我怎样才能让 celery 任务完成后回调到 flask

转载 作者:太空宇宙 更新时间:2023-11-03 16:17:01 24 4
gpt4 key购买 nike

将 celery 与 Flask 应用程序集成时,我有一个长期任务,需要在任务完成时回调到 Flask

@celery_app.task(bind=True)
def doSth(self):
rv = long_time_job()
return rv

@task_success.connect(sender=doSth)
def on_add_success(sender, result, **kwargs):
#tell flask that a task has been done
pass

但我不知道

最佳答案

celery 任务通过工作线程独立于 Flask 服务器运行,它们是与消息代理(rabbitmq?)通信的两个不同进程。因此,当任务结束时,回调函数应该在考虑到前者的情况下完成,这是两个不同的过程。

这里我给你两个解决方案:

  • Webhook:在 Flask 服务器中定义一个 HTTP URL,并在任务结束时使用任务 ID 执行 GET,以便 Flask 知道。
  • 数据库:使用线程安全的数据库并在其中保存任务的状态。 Flask 永远不会知道任务已经结束,直到它查询数据库(即轮询),不是实时的,但仍然是一个选项。

关于python - 我怎样才能让 celery 任务完成后回调到 flask ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38867608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com