2024-04-20 05:56:59 发布
网友
我正在用芹菜构建一个Django应用程序。在
我有一个@task,我用.delay()触发它。在
@task
.delay()
任务完成后,我需要使用返回值(字符串)来更新我的Postgres数据库。在
我不知道我应该把数据库更新代码放在哪里?在
我需要:
(一)
return_value = my_task.delay(..) (ORM - DB update code)
(二)
Python的正确路线是什么?在
您应该使用第二种方法,因为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
您应该使用第二种方法,因为delay方法会在不等待任务完成的情况下立即退出。返回值变量将是AsyncResult实例,而不是您希望从我的任务返回的值。因此,如果您想在任务完成后更新数据库,请在任务内部进行更新。在
或者,可以在类u上使用“成功”处理程序:
相关问题 更多 >
编程相关推荐