Django 预关闭钩子关闭挂起的 pymongo 连接

2024-04-01

我在 Django 项目中使用 pymongo,最近我开始遇到一个问题,在退出主 Django 进程(即使通过管理命令)时,pymongo 连接将挂起,并且该进程永远不会退出。显然,堆栈中的某个地方出了问题,但目前最好的解决方案似乎是在 Django 退出之前显式关闭连接。

那么:Django 是否为此提供了预关闭信号或钩子?

顺便说一句:如果您有兴趣的话,我的连接代码。

from django.conf import settings
from pymongo import ReplicaSetConnection, ReadPreference

conn = ReplicaSetConnection(
    hosts_or_uri=settings.MONGO['HOST'],
    replicaSet=settings.MONGO['REPLICASET'],
    safe=settings.MONGO.get('SAFE', False),
    journal=settings.MONGO.get('JOURNAL', False),
    read_preference=ReadPreference.PRIMARY
)

db = getattr(conn, settings.MONGO['DB'])

(好奇的是,这是在 pymongo 中进行连接池的正确方法吗?)


虽然这不能解决您的问题,但在 2012 年 7 月对 pymongo 的提交中引入了挂起:https://github.com/mongodb/mongo-python-driver/commit/1fe6029c5d78eed64fcb2a6d368d9cdf8756d2f4#commitcomment-1820334 https://github.com/mongodb/mongo-python-driver/commit/1fe6029c5d78eed64fcb2a6d368d9cdf8756d2f4#commitcomment-1820334.

具体来说,它仅影响 ReplicaSetConnections。他们给出的答案是调用connection.close(),但是正如您在问题中正确指出的那样,没有好的钩子来关闭连接。

我相信您可以在每个请求结束时安全地关闭连接。 Django 已经为其与数据库的 ORM 连接执行了此操作。这就是为什么他们建议使用像 pgbouncer 这样的连接池,这样重新连接到 postgres 是即时的。 Pymongo内置了连接池,可以随意重新连接。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django 预关闭钩子关闭挂起的 pymongo 连接 的相关文章

  • mongodb 通配符匹配特定键的所有值[重复]

    这个问题在这里已经有答案了 我试图弄清楚如何匹配一个键并返回该键的所有值 是否可以将值作为通配符给出 我想在值上使用通配符返回该特定键的所有内容 db collection find key 我还希望这也能返回整个集合 其中的键也与通配符值
  • 序列化 Django Rest 框架时的附加字段

    我是 django 休息框架的新手 并创建了一个示例Employee model My 模型 py class Employees models Model created models DateTimeField auto now add
  • 使 ArrayField 的 base_field 对于 Django 中的表来说是唯一的

    Goal 下面应该提出一个ValidationError gt gt gt m1 MyModel names name1 gt gt gt m2 MyModel names name1 name2 gt gt gt m1 save gt g
  • UUIDField 的“默认”属性是否负责唯一性?

    我刚刚跳入 Django 进行一个快速项目 我想有一个UUID字段 https docs djangoproject com en 2 2 ref models fields uuidfield在模型中 我将其用于外部 id 字段 每个模型
  • Pycharm错误:配置不正确

    在我的 DEV 计算机意外关闭后 当返回 Pycharm 项目时 我注意到我正在编辑的 Django 视图文件 有 700 多行 发生这种情况时 它完全是空的 我设法从备份中恢复它 那里没有损失 尝试调试时出现问题 它返回此错误 不正确配置
  • 优化 Django Queryset for 循环

    如何优化以下查询集 link goal for link in self child links all 我想摆脱 for 循环并只访问数据库一次 我有以下代码 class Goal models Model name models Cha
  • 在 Django 视图中访问其他项目中的模型导致“表不存在”错误

    基地项目结构 baseproject baseapp models py class BaseModel models Model 其他项目结构 project app views py urls py 项目 app views py im
  • 如何将当前登录的用户指定为模型字段的默认值?

    我想做这样的事情 class Task models Model created by models ForeignKey User default LoggedInUser blank True null True related nam
  • 查询中的自定义属性

    鉴于下面的简化示例 我将如何访问查询集中的自定义 current status 属性 有可能吗 目前 我想列出所有当前事件并显示当前状态 我可以让属性显示在模板中 但我无法通过它来排序查询集 或者 我是否需要在 选择 中创建一个带有某种嵌套
  • Pymongo 中的全文搜索

    即将推出的 MongoDB 2 4 支持全文检索 http docs mongodb org manual release notes 2 4 text indexes 我们在 mongo shell 中使用命令来执行此操作 例如 db p
  • 同一域上的多个 Django 站点 - CSRF 失败

    我有两个应用程序在同一域的不同端口上运行 都使用 csrf 中间件 当我登录其中一个应用程序时POST从另一个提交失败 我推测是因为SESSION COOKIE DOMAIN是一样的 我尝试改变SESSION COOKIE NAME 但是
  • 修改不同Django用户的会话数据

    这可能不可能 但是当某些情况发生时 我想修改某些登录用户的会话数据 标记一些额外的逻辑需要在下次加载页面时运行 有没有办法通过用户 ID 访问用户的会话 tldr Query Session模型 然后通过修改匹配会话SessionStore
  • Daphne Django 文件上传大小限制

    我使用 Daphne 进行套接字和 http 连接 我正在运行 4 个工作容器 并且现在在 docker 容器中本地运行所有内容 如果我尝试上传 400MB 的文件 我的 daphne 服务器会失败 它适用于最大 15MB 的小文件 我的
  • 使用 Django 添加额外 \\ 字符的 JSON 编码

    我正在尝试创建一个函数 将包含消息和 Django 模型实例的字典转换为 JSON 然后我可以将其传回客户端 例如 我在 models py 中定义了模型 Test from django db import models class Te
  • 在 Django(Python) 中向用户提供 Excel(xlsx) 文件下载

    我正在尝试使用 Django 创建和提供 Excel 文件 我有一个 jar 文件 它获取参数并根据参数生成 excel 文件 并且它可以正常工作 但是 当我尝试获取生成的文件并将其提供给用户下载时 文件损坏了 它的大小为 0kb 这是我用
  • Django Admin Media 前缀 URL 问题

    我有以下文件夹结构 src BAT templates admin base html src BAT media base css src BAT media admin media base css 设置 py MEDIA ROOT o
  • 使用 PyMongo 将 MongoDB find() 返回序列化为非匿名 JSON 数组

    我的 Python 代码查询 MongoDB 并返回an array以下对象 u attribute u value u id ObjectId 534776c66e5987041f6154bd 我想要实现的是返回以下 JSON mycol
  • 使用 Django Rest 保存 Base64ImageField 类型会将其保存为原始图像。如何将其转换为普通图像

    我的模型中有 5 个图像字段 imageS imageS imageS imageS 和 imageE 我正在尝试按以下方式保存图像 图像的类型Base64ImageField images imageA imageB imageC ima
  • Django 管理列降序排序

    当使用 Django admin 时格拉佩利 https github com sehmaschine django grappelli我希望单击列标题即可按降序对表格进行排序 我不希望通过在模型元类中定义排序字段来对列进行默认排序 默认行
  • Django模型递归关系

    为什么要创建递归关系 aField models ForeignKey self 这和上面的一样吗 class aClass models Model aField models ForeignKey aClass 当您希望父节点和子节点具

随机推荐

  • 如何在 Flutter 中添加文件选择器插件?

    我正在创建一个 Flutter 项目 其中有一段数据 JSON 我想将其导入和导出到用户想要的位置 为了实现这一目标 我需要一个File PickerFlutter 中的插件 现在 我搜索了Dart Packages存储库 file pic
  • 如何使用 create-react-app 提供 SSL 证书?

    我正在尝试托管一个我使用 Facebook 样板在本地创建和测试的 React 应用程序 客户端应用程序与我使用 node js 制作的 API 进行交互 并且我在设置安全连接时没有遇到任何问题 使用 node js 客户端发送我的 SSL
  • Xcode 11.4 编译错误“缺少包产品 <包名称>”

    当我整合一个本地包 https developer apple com documentation xcode creating a standalone swift package with xcode在我的 Xcode 项目中 最初一切
  • 使用 JAXB 将元素表示为布尔值?

    我们有这个 XML
  • 如何使用urllib登录网站?

    我正在尝试登录这个网站 http www broadinstitute org cmap index jsp http www broadinstitute org cmap index jsp 我在 Windows 上使用 python
  • EasyMock 中“same”和“eq”的区别

    EasyMock 中的 same 和 eq 之间是否存在显着 甚至任何 差异 same检查两个对象是否实际上是同一个实例 引用相等 eq calls equals因此检查两者是否具有相同的值 值相等 请记住 默认equals实施用途 内部
  • Tensorflow 相当于 numpy.diff

    是否存在相当于的张量流numpy diff https docs scipy org doc numpy reference generated numpy diff html 计算沿给定轴的第 n 个离散差值 对于我的项目 我只需要 n
  • ARM 9处理器的opencv交叉编译

    我需要为 ARM 9 处理器交叉编译 opencv 我有处理器的工具链 但不知道如何交叉编译 请告诉我为arm板交叉编译的过程 谢谢大家 看这个参考 http www airs com ian configure configure 5 h
  • 在 Android 中使用签名 URL 从 Amazon S3 + CloudFront 播放 m3u8

    我能够使用签名 URL 访问播放列表文件 m3u8 但问题是 要访问播放列表中的流文件 ts 每个文件的 URL 也需要签名 例如 我可以使用签名 URL 访问 playlist m3u8 EXTM3U EXT X TARGETDURATI
  • 在模态 JDialog 之外时光标不正确?

    使用方法时setCursor 要更改组件使用的光标 所有组件都可以正常工作 包括JFrame and JDialog 这里的问题在于modal JDialog 当鼠标处于inside对话框中 光标显示在右侧 但是 当鼠标移动时outside
  • 使用 AngularJS 和 ngResource 调用外部 api

    我们目前正在开发一个小型 AngularJS 项目 并从前端开始 所以纯 HTML 和 JavaScript 然而 我们需要使用 ngResource 进行一些 API 调用 目前我们正在使用canned http github com s
  • 将 Google Apps API 密钥与距离矩阵结合使用

    我正在使用谷歌距离矩阵 API https developers google com maps documentation distancematrix 并且文档告诉我我需要一个 API 密钥 但我可以在没有 API 密钥的情况下使用它
  • 当 AngularJS 中的响应为 304(未修改)时,$http 返回错误

    我正在使用 angularjs http 向 asp net web api 发出请求 服务器上的 Web API 通过 ETag 管理缓存 如果我的响应状态代码是 304 那么它会进入错误函数 而不是成功函数 我不明白 AngularJS
  • 在 DataGrid 工具栏的弹出组件 Material-UI 中添加自定义样式

    我正在创建一个自定义Data Grid Toolbar通过修改现有组件Grid Toolbar组件来自材质 UI https v4 mui com Here https v4 mui com components data grid fil
  • WWW::Mechanize::Timed https 超时不起作用

    所以我在互联网上研究了这个问题 至少我是这么认为的 我正在尝试设置一个alarm超时 60 秒get 但它不会被捕获 并且会运行超过 60 秒 而且每当 www mechanized timed 构造函数达到默认超时 180 秒 时 我都会
  • Discord.py 机器人没有响应

    我对discord py相对较新 我正在制作一个机器人 但是使用某些命令或我放置的东西 机器人停止响应命令 当它以前工作时 我不知道如何修复它 机器人开启 但不响应任何命令 这是新的区域 import os import discord f
  • C#列表覆盖问题[重复]

    这个问题在这里已经有答案了 我有一些代码如下所示 用于写入 a 的值gridview到如图所示的列表 该代码确实获得了正确的值 但是当网格的第二行添加到列表中时 它会覆盖列表的第一行 有人知道为什么会发生这种情况吗 C Code List
  • 如何在 SQL 中识别连续日期组?

    我正在尝试编写一个函数来识别日期组并测量该组的大小 到目前为止 我一直在 Python 中按程序执行此操作 但我想将其移至 SQL 中 例如 列表 Bill 01 01 2011 Bill 02 01 2011 Bill 03 01 201
  • 角度标记错误

    我突然得到这个 它不允许我正确使用我的传单地图 每次我单击地图时 都会将一个标记添加到相同的坐标 当我尝试使用函数删除标记时 它会清空标记数组 但标记在地图上仍然可见 这是怎么回事 Error parse syntax Syntax Err
  • Django 预关闭钩子关闭挂起的 pymongo 连接

    我在 Django 项目中使用 pymongo 最近我开始遇到一个问题 在退出主 Django 进程 即使通过管理命令 时 pymongo 连接将挂起 并且该进程永远不会退出 显然 堆栈中的某个地方出了问题 但目前最好的解决方案似乎是在 D