【发布时间】:2019-12-19 18:30:17
【问题描述】:
我在我的 django 项目中使用了 celery .django 正在运行 uWSGI 并且可以很好地与 postgresql 一起使用,但是 celery 似乎无法连接到 postgresql :
Traceback (most recent call last):
File "/home/classgram/www/env/lib/python3.6/site-packages/django/db/backends/base/base.py", line 216, in ensure_connection
self.connect()
File "/home/classgram/www/env/lib/python3.6/site-packages/django/db/backends/base/base.py", line 194, in connect
self.connection = self.get_new_connection(conn_params)
File "/home/classgram/www/env/lib/python3.6/site-packages/django/db/backends/postgresql/base.py", line 178, in get_new_connection
connection = Database.connect(**conn_params)
File "/home/classgram/www/env/lib/python3.6/site-packages/psycopg2/__init__.py", line 130, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
psycopg2.OperationalError: FATAL: password authentication failed for user "hamclassy"
FATAL: password authentication failed for user "hamclassy"
我正在开发主机,主机操作系统是 Ubuntu 18.04 。谢谢
【问题讨论】:
-
检查
hamclassy用户是否存在于 Postgres 中。 -
如果
hamclassy存在,您需要检查运行celery的主机是否允许以hamclassy登录。可能是 django 主机有访问权限而 celery 没有。 -
@SergeyPugach:
hamclassy角色存在。当我运行SELECT 1 FROM pg_roles WHERE rolname='hamclassy'时,返回1。 -
@azundo 。我怎样才能检查它?抱歉,但我是 Unix OS 终端的新手,我对用户和权限了解不够。在运行
htop命令时,我可以看到celery和uwsgi都与用户classgram一起运行,那又如何我必须检查 classgram 是否可以访问 postgresql? -
这个问题与Celery无关——显然是典型的PostgreSQL访问控制问题。
标签: django postgresql celery ubuntu-18.04