gpt4 book ai didi

python - 在 Celery 任务中所做的数据库更改在主线程中不可见

转载 作者:行者123 更新时间:2023-11-30 21:27:25 24 4
gpt4 key购买 nike

在Celery任务中更新或创建新对象时,在主线程中读取新数据失败。更新/创建后我发出

db.session.commit()

从 cmd 看来,数据库中的数据已更新,但可能 session 中的某些内容仍在获取旧数据。当我在同一个线程中更新一些对象时,它工作正常。

最佳答案

实际上我不确定为什么我们需要在 Celery 任务上使用 commit 命令来结束事务,然后再次在主线程上。下面是工作示例:

此 celery 任务每 7 秒运行一次。

@scheduler.task()
def run_task():
task = Tasks.get_task("task1")
task.update_task({'status': "succeed"})
db.session.commit()


def test_update_task(self):
task = create_task("task1", status="active")

log.warning("task {} status before change:{}".format(task.id, task.status))

time.sleep(10)

# Here the celery task will update task status from "active" to "succeed"
db.session.commit()
log.warning("test {} task status after Celery change:{}".format(task.id, task.status))

关于python - 在 Celery 任务中所做的数据库更改在主线程中不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58212462/

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