gpt4 book ai didi

python - 使用 celery 作为模型层

转载 作者:行者123 更新时间:2023-12-03 17:04:29 24 4
gpt4 key购买 nike

要求

我收到一个不寻常的要求:必须使用 celery 与数据库层进行通信。

应用程序在后端使用 Flask 和 MongoDB,在前端使用 Angular。

发起人相信我可以启动一项任务,让其中一名工作人员将数据移入/移出 Mongo 并取回结果。

到目前为止我的研究

据我所知,如果我同步调用一个 celery 任务(使用 __call__apply ),该任务将在本地执行,而不是发送到数据库;如果我异步调用它,我必须在 Flask 端阻塞并继续轮询任务队列,直到我得到结果或返回错误。

另一种方法是将 REST API 修改为进行异步调用(立即返回任务 ID 并继续在客户端轮询结果。我个人讨厌这个想法,这对于毫秒范围内的任务(如基本 CRUD 操作)来说看起来很愚蠢。

问题

有没有优雅的包装方式task.delay为了使它看起来像一个同步调用,并且仍然让其中一名工作人员执行任务?

最佳答案

是的,有-不知道我怎么错过了AsyncResult.get在文档中:

AsyncResult.get(timeout=None, propagate=True, interval=0.5)

Wait until task is ready, and return its result.



所以你只需像这样调用任务:
task.delay(args).get(timeout=1)

关于python - 使用 celery 作为模型层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22201677/

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