Django Postgres关闭了与芹菜工人的连接

Django Postgres关闭了与芹菜工人的连接,django,postgresql,heroku,celery,Django,Postgresql,Heroku,Celery,我有一个Django(1.8)应用程序,托管在Heroku上,使用Postgres(9.4.4)数据库。有两个pro-dyno:一个运行web服务器,一个运行芹菜(3.1)worker,芹菜配置了 在过去的几周/几个月里,这个应用程序一直在平稳运行,但有几天我偶尔会遇到几秒钟的停机时间 从日志来看,它似乎与因未知原因循环的dynos有关: ...<some successful requests>... heroku[web.1]: State changed from up to

我有一个Django(1.8)应用程序,托管在Heroku上,使用Postgres(9.4.4)数据库。有两个pro-dyno:一个运行web服务器,一个运行芹菜(3.1)worker,芹菜配置了

在过去的几周/几个月里,这个应用程序一直在平稳运行,但有几天我偶尔会遇到几秒钟的停机时间

从日志来看,它似乎与因未知原因循环的dynos有关:

...<some successful requests>...
heroku[web.1]: State changed from up to starting
heroku[web.1]: Cycling
heroku[web.1]: Stopping all processes with SIGTERM
... Cycling in progress
heroku[web.1]: State changed from starting to up
现在这个问题每天发生15次以上

有人知道为什么dynos会收到这个信号吗?另外,为什么循环会导致“操作错误:由于管理员命令而终止连接”错误?为什么即使我们远远低于heroku设定的限制,Postgres仍在关闭连接


顺便说一句,应用程序在Postgres 9.3本地运行时没有任何问题。

不确定这是否为您解决了,但我非常确定错误消息表明是数据库服务器而不是worker dyno收到了信号。
heroku[worker.1]: State changed from up to starting
heroku[worker.1]: Cycling
heroku[worker.1]: Stopping all processes with SIGTERM
app[worker.1]: worker: Warm shutdown (MainProcess)
app[worker.1]: [INFO/MainProcess] beat: Shutting down...

...Celery being restarted...

app[worker.1]: [INFO/Beat] beat: Starting...
app[worker.1]: [INFO/MainProcess] Connected to amqp://my-queue-address
app[worker.1]: [INFO/Beat] Writing entries...
app[worker.1]: [INFO/MainProcess] mingle: searching for neighbors
app[worker.1]: [WARNING/MainProcess] celery@xxxxxxxxxxx ready.
app[worker.1]: [INFO/MainProcess] mingle: all alone
app[worker.1]: [INFO/Beat] Scheduler: Sending due task celery.backend_cleanup (celery.backend_cleanup)
app[worker.1]: [INFO/MainProcess] Received task: celery.backend_cleanup[13f89001-08b0-434b-bc7e-372ffcfef521]
app[worker.1]: [INFO/Beat] Writing entries...
app[worker.1]: [INFO/MainProcess] Task celery.backend_cleanup[13f89001-08b0-434b-bc7e-372ffcfef521] succeeded in 0.00162791600451s: None
app[worker.1]: [ERROR/Beat] Database gave error:
OperationalError('terminating connection due to administrator command\nSSL connection has been closed unexpectedly\n',)

...Flood of error logs...

app[worker.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 218, in _set_autocommit
app[worker.1]:     six.reraise(dj_exc_type, dj_exc_value, traceback)
app[worker.1]: InterfaceError: connection already closed