python - 尝试将内容保存到数据库后,在长时间运行的任务中“服务器意外关闭了连接”
问题描述
我有 django 应用程序和芹菜工人。
一项 celery 任务非常庞大,可以运行超过 15 分钟。完成主要计算并尝试将结果保存到 db 时,出现错误:psycopg2.OperationalError: server closed the connection unexpectedly
.
@celery_app.task
def task(param):
Model1.objects.create(...)
huge_calculations(param) # may run for over 15 minutes
Model2.objects.create(...) # <- error here
我设法通过谷歌搜索的所有内容都指的是简单的解决方案:“更新所有内容”,但我已经这样做了,项目中每个包的最新版本仍然存在此错误。
对于短任务(即使是具有不同参数的相同任务)一切正常。
我也尝试过调整数据库连接超时,但没有运气:/
解决方案
你试过这个吗?
我有同样的问题。目前,作为一种解决方法,必须使用使用的方法在连接对象周围创建包装器来挂钩它们。在 cursor() 方法中必须执行
SELECT 1
“ping”检查并在需要时重新连接以返回有效的工作游标。
推荐阅读
- oracle - 带有 BI Publisher 错误的 APEX 报告打印。ORA-22973:HTTP 请求失败 ORA-06512:在“SYS.UTL_HTTP”,第 1324 行 ORA-12547:TNS:失去联系
- javascript - Individual column searching filter for js sourced data using DataTable.js
- magento2 - 我们找不到符合选择的产品。megento 2中的错误
- java - 如何以正确的顺序将 LinkedHasMap 值转换为 ArrayList/Array?
- php - 如何使用php在表格中显示低于同一日期的出勤率?
- mysql - 从 mysql 到 HDFS 或 Hive 表的数据实时更新(CDC 方法)
- list - 如何使特定列表值(tcl)
- python - 使用 sed、awk、perl 等删除 N 个匹配模式
- php - 如何创建用于连接数据库的索引文件
- .htaccess - 使用 htaccess 在每个 URL 的末尾添加“?XDEBUG_PROFILE=on”