如何在提交数据库事务之前保留芹菜任务



我有一个简单的上下文管理器和事务:

@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的东西?

以下是处理同一问题的人的快速示例:

https://medium.com/hypertrack/dealing-with-database-transactions-in-django-celery-eac351d52f5f

本质是您应该以某种方式保存所有apply_async()调用,直到您知道数据库事务已结束。

最新更新