Celery 任务在从大型数据库中提取数据时中途失败
Celery task fails midway while pulling data from a large database
我是 运行 在 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.
可能是什么问题导致了这个问题,我该如何解决?
这很可能意味着您的 PostgreSQL 对事务可以花费多长时间(事务中空闲)或会话可以多长时间(会话超时)有限制。
发生这种情况的原因可能是处理数据库的一种典型的、不正确的方式(我什至见过高级开发人员这样做)- 进程创建一个数据库会话,然后开始执行一些可能需要很长时间的业务逻辑完成时间,而数据库数据已部分更新或插入。由于 PostgreSQL 强制超时,以这种方式编写的代码注定会失败。
我是 运行 在 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.
可能是什么问题导致了这个问题,我该如何解决?
这很可能意味着您的 PostgreSQL 对事务可以花费多长时间(事务中空闲)或会话可以多长时间(会话超时)有限制。
发生这种情况的原因可能是处理数据库的一种典型的、不正确的方式(我什至见过高级开发人员这样做)- 进程创建一个数据库会话,然后开始执行一些可能需要很长时间的业务逻辑完成时间,而数据库数据已部分更新或插入。由于 PostgreSQL 强制超时,以这种方式编写的代码注定会失败。