Django和芹菜的交易障碍。

django-transaction-barrier的Python项目详细描述


django_transaction_barrier为 交易。django应用程序开发人员可以使用“事务 barrier”在事务中生成任务并保证 任务块,直到它能够访问 交易。django_transaction_barrier的设计 Celery记住并提供芹菜 任务基类。使用基类很容易编写 原子地修改数据库并生成一个芹菜任务来执行 在事务提交之后。

安装

从源安装或使用pip:

pip install django_transaction_barrier

并将“django_transaction_barrier”添加到 设置.py:

INSTALLED_APPS=('django_transaction_barrier',...)

用法

fromceleryimporttaskfromdjango.dbimporttransactionfromdjango_transaction_barrier.celeryimportTransactionBarrierTask@task(base=TransactionBarrierTask)defdo_something_task(model_id):value=Model.objects.get(id=model_id).value...@transaction.atomicdefkick_off_task(model,value):model.value=valuedo_something_task.apply_async_with_barrier(args=(model.id,))model.save()

详细信息

如果应用程序生成异步事务barriert,请询问任务 保证最终执行(假设任务队列是持久的) 在事务提交之后。如果事务中止,则任务 引发TransactionBorted异常并不执行。在 自动提交模式(即“交易外”) 事务barriertasks的行为类似于普通的芹菜任务。

如果应用程序同步执行transactionbarriertask(例如, 在事务中,任务执行 立即提交,而不等待事务提交。

实施

Django_transaction_barrier使用行实现事务壁垒 插入以表示已提交的事务和某些特定于数据库的逻辑 检测中止。

测试

docker build -t tests . && docker run tests

待办事项

  • 添加对mysql后端的支持。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在安卓 10中,如何在不使用READ_PHONE_STATE权限的情况下获取网络连接类型?   java SpringBoot OAuth2,keyClope不将映射角色返回为权限   如何创建pom。使用Eclipse的Java项目的xml   java Kotlin编译良好,但始终警告“发生了非法的反射访问操作”   模型类中未声明java Rails模型实例变量   java Hibernate@OneToMany因“集合未与任何会话关联”而失败   java对Atom感到失望。io无效标志   如何在序列化的java对象中正确引用自动连接的Springbean?   java将重复的ifelse语句修改为更干净的代码   java^和$在正则表达式中是什么意思?   java struts 2 dispatcher和tomcat 6安全性   由于某些电子邮件,java InternetAddress解析在Mime头上失败   笔划宽度转换(SWT)实现(Java,C#…)   swing需要一个创建按钮的Java方法   连接到本机库时出现java错误:E/eglCodecCommon:goldfishAddressSpaceHostMemoryLocator:ioctl\u ping设备类型=5,ret=1失败   API 22上的java 安卓外部存储权限   java获取jar特定路径作为字符串   Java中的多线程与计算