修补Django以在失败之前先重试数据库连接。

django-dbconn-retry-coreteam的Python项目详细描述


Django数据库连接自动重新连接

https://coveralls.io/repos/github/jdelic/django-dbconn-retry/badge.svg?branch=HEADhttps://travis-ci.org/jdelic/django-dbconn-retry.svg?branch=master

这个库monkeypatchesdjango.db.backends.base.BaseDatabaseWrapperso 当数据库操作失败时,因为基础TCP连接 已经关闭,它首先尝试重新连接,而不是立即升起 一个OperationException。在

为什么这个有用?

我使用HAProxy作为PostgreSQL数据库前面的负载平衡器 时间,有时除了pgbouncer。即使你能 通过tcpka启用TCP keep-alive数据包来防止意外, clitcpka和{a6},我仍然会遇到 基础TCP连接已通过负载平衡器关闭。最常见的 这导致

django.db.utils.OperationalError: server closed the connection unexpectedly
This probably means the server terminated abnormally before or while
processing the request.

这个库修补了Django,使其在失败之前尝试重新连接一次。在

另一个应用是在使用Hashicorp Vault时,其中 数据库连接的凭据可能随时过期,然后需要 从保险库刷新。在

如何安装?

只需使用pip install django-dbconn-retry将库拉入。然后加上 django_dbconn_retrysettings.py中的{tt5}$到INSTALLED_APPS。在

信号

库提供了一个接口,供其他代码插入到进程中, 例如,允许12factor-vault刷新数据库凭据 在代码尝试重新建立数据库连接之前。这些是 使用Django Signals实现。在

SignalDescription
^{tt8}$Installs a hook of the type ^{tt9}$ that will be called before the library tries to reestablish a connection. 12factor-vault uses this to refresh the database credentials from Vault.
^{tt10}$Installs a hook of the type ^{tt9}$ that will be called after the library tried to reestablish the connection. Success or failure has not been tested at this point. So the connection may be in any state.

许可证

版权所有(c)2018,Jonas Maurus 版权所有。在

以源代码和二进制形式重新分发和使用,有无 如果满足以下条件,则允许修改:

  1. 重新分发源代码必须保留上述版权声明,此 条件列表和以下免责声明。在
  2. 以二进制形式重新分发必须复制上述版权声明, 此条件列表和文档中的以下免责声明 和/或分发时提供的其他材料。在
  3. 既没有版权所有者的名字也没有它的贡献者的名字 可用于认可或推广来自此软件的产品 未经事先书面许可。在

本软件由版权所有人和贡献者“按原样”提供,并且 任何明示或暗示的保证,包括但不限于 适销性和适用于特定用途的保证 否认。在任何情况下,版权持有人或贡献者不承担任何责任 对于任何直接的、间接的、偶然的、特殊的、示范性的或后果性的 损害赔偿(包括但不限于采购替代货物或 服务;使用、数据或利润损失;或业务中断) 根据任何责任理论,无论是在合同中,严格责任, 或因使用而产生的侵权行为(包括疏忽或其他) 即使被告知有这种损坏的可能性。在

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

推荐PyPI第三方库


热门话题
java重写父类中的特定行   java Apache Commons CLI订购帮助选项?   java如何将数据添加到网格视图   java如何在Apache Camel批处理后移动文件?   java如何为日期范围的between子句编写hql查询?   雅加达ee开始Java编程,我应该从哪里开始?   排序Java8+流:检查我的objectinstances的两个字段的列表顺序是否正确   java如何将json转换为Map<String,Object>确保整数为整数   java不能在Spring数据JPA批处理过程中创建TransactionException   java损坏的PDF文件从FTP下载到使用Apache Common Net的设备   java无法使用Spring批处理和Wso2为XML架构命名空间找到Spring NamespaceHandler   java Android ImageView未显示在SherlockFragment中   Maven在构建时出错=无法识别Java路径   java如何使用批处理文件调用关闭处理程序?   java admob广告横幅重叠我的游戏屏幕安卓