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

时间:2017-01-30 21:35:29

标签: python sqlalchemy celery

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

@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 ??

的内容

1 个答案:

答案 0 :(得分:0)

以下是处理同一问题的人的一个简单示例:

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

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