Celery任务在从大型数据库中提取数据时中途失败

问题描述 投票:1回答:1

我在django-rest应用程序中使用celery运行一个周期性任务,该应用程序从具有多个表的大型Postgres数据库中提取数据,任务启动良好并且将一些数据拉出约50分钟然后因此错误而失败

client_idle_timeout
server closed the connection unexpectedly, This probably means the server terminated abnormally before or while processing the request.

可能导致此问题的原因是什么,我该如何解决?

django postgresql django-rest-framework celery
1个回答
0
投票

这很可能意味着你的PostgreSQL限制了事务可以花多长时间(事务中空闲),或者会话可以持续多长时间(会话超时)。

这可能是因为一种典型的,不正确的数据库处理方式(我甚至已经看到高级开发人员这样做了) - 进程创建了一个数据库会话,然后开始做一些可能需要很长时间才能完成的业务逻辑,同时DB数据已部分更新或插入。以这种方式编写的代码注定要失败,因为PostgreSQL强制执行超时。

© www.soinside.com 2019 - 2024. All rights reserved.