首页 > 解决方案 > 尝试将内容保存到数据库后,在长时间运行的任务中“服务器意外关闭了连接”

问题描述

我有 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

我设法通过谷歌搜索的所有内容都指的是简单的解决方案:“更新所有内容”,但我已经这样做了,项目中每个包的最新版本仍然存在此错误。

对于短任务(即使是具有不同参数的相同任务)一切正常。

我也尝试过调整数据库连接超时,但没有运气:/

标签: pythondjangocelery

解决方案


你试过这个吗?

我有同样的问题。目前,作为一种解决方法,必须使用使用的方法在连接对象周围创建包装器来挂钩它们。在 cursor() 方法中必须执行 SELECT 1“ping”检查并在需要时重新连接以返回有效的工作游标。


推荐阅读