django - 在 Django 中提交事务后运行代码

标签 django transactions signals commit

在 Django 中提交事务后有什么方法可以运行一些代码吗?

我需要将一些消息发送到rabbitmq 服务器进行离线处理,但是在提交Django 事务之前,消息会到达消费者。

我的消息是在模型的 post_save 信号中发送的。我正在寻找的是一种类似的机制,使用信号或其他东西,它会在提交后执行代码(如果事务失败则不执行任何操作)。

我还没有在 Django 中找到任何通用的方法。你有什么想法?

最佳答案

django-transaction-hooks为Django < 1.9解决了这个问题,功能是built into Django 1.9+ :

from django.db import transaction

def do_something():
    pass  # send a mail, invalidate a cache, fire off a Celery task, etc.

transaction.on_commit(do_something)

关于django - 在 Django 中提交事务后运行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/950214/

相关文章:

继续表现怪异吗?

在c中使用fork和pipe后,无法在终端中看到程序的输出

python - render_to_response 中传递的字典范围

python - Django:在发布到模型之前,我应该将感知日期时间实例转换为 UTC 吗?

python - 设置 template 和wrapper_class 参数并渲染单个表单字段而不是表单

javascript - 将 DJango 列表的数据传递给 javascript 列表时出错

c# - WMQ : Distributing MQ readers over several machines

java - Java EE 5 中的两阶段提交事务

svn - 颠覆 : Can multiple copy operations be done in a single revision?

c - 为什么在等待条件变量时需要 while 循环