我有一个带事务的简单上下文管理器:
@contextmanager
def transaction(db):
try:
yield
db.session.commit()
except:
db.session.rollback()
raise
我的代码包含任务:
with transaction(db):
for x in Test.query.all()
x.update()
notify_change.apply_async()
如何在会话提交或中止任务之前保留任务?猴子补丁?任何想法?
如何实现类似于django-celery-transactions
??
答案 0 :(得分:0)
以下是处理同一问题的人的一个简单示例:
https://medium.com/hypertrack/dealing-with-database-transactions-in-django-celery-eac351d52f5f
本质上,您应该以某种方式保存所有apply_async()
调用,直到您知道数据库事务已结束为止。