芹菜:何时何地使用运行@task的.delay()的返回值来更新数据库?

2024-04-20 05:56:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用芹菜构建一个Django应用程序。在

我有一个@task,我用.delay()触发它。在

任务完成后,我需要使用返回值(字符串)来更新我的Postgres数据库。在

我不知道我应该把数据库更新代码放在哪里?在

我需要:

(一)

return_value = my_task.delay(..)
(ORM - DB update code)

(二)

^{pr2}$

Python的正确路线是什么?在


Tags: django字符串代码数据库应用程序taskdbreturn
1条回答
网友
1楼 · 发布于 2024-04-20 05:56:59

您应该使用第二种方法,因为delay方法会在不等待任务完成的情况下立即退出。返回值变量将是AsyncResult实例,而不是您希望从我的任务返回的值。因此,如果您想在任务完成后更新数据库,请在任务内部进行更新。在

或者,可以在类u上使用“成功”处理程序:

class MyTask(Task):

    def run(self, *args, **kwargs):
        # your task execution code

    def on_success(self, retval, task_id, args, kwargs):
        # put the retval into the DB

相关问题 更多 >