如何在Heroku上查看/调试Django app的postgres数据库连接?

时间:2014-01-28 19:51:59

标签: django postgresql heroku

我在Heroku上运行的Django应用程序当前崩溃,出现Too many connections for role "my_user"错误,我需要弄清楚发生了什么。我在heroku上使用基本版本的postgress,提供20个连接。

根据我的错误页面,导致错误的特定代码行是:

/app/.heroku/python/lib/python2.7/site-packages/psycopg2/__init__.py in connect
...
conn = _connect(dsn, connection_factory=connection_factory, async=async)
...

我的工作每60秒运行一次,如下所示。这可能是每次运行时创建一个新连接并保持其先前的连接打开吗?我怀疑没有,因为这项工作运行了几个小时而没有最大化连接。

Clock.py文件(每60秒运行一次以发送任何排队的邮件):

import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'anonqaproject.settings'

from apscheduler.scheduler import Scheduler
from post_office import utils

sched = Scheduler()

@sched.interval_schedule(minutes=1)
def timed_job():
    utils.send_queued_mail()

sched.start()

while True:
    pass

1 个答案:

答案 0 :(得分:2)

我在Heroku的postgres经理的帮助下想出了这个。我需要的是:

SELECT * FROM pg_stat_activity;

一旦我看到每个连接的backend_startquery_start日期时间戳,很明显这是我的预定作业每次运行时都会打开一个新连接 - 每隔60秒。现在我必须弄清楚如何在完成后重新使用连接和/或关闭连接。