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

时间:2019-04-03 07:42:55

标签: django postgresql django-rest-framework celery

我正在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.

可能是引起此问题的原因,我该如何解决?

1 个答案:

答案 0 :(得分:0)

这很可能意味着您的PostgreSQL对事务可以花费多长时间(事务空闲)或会话可以多长时间(会话超时)有所限制。

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