我在我的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 . 谢谢
这个问题与Celery 无关——这显然是一个典型的 PostgreSQL 访问控制问题。
看起来你的PostgreSQL服务器允许hamclassy
角色(用户(从运行Django的机器连接,但不允许你的Celery工作人员访问。寻找问题解决方案的正确位置是PostgreSQL服务器上的pg_hba.conf
文件。
在大多数 Linux 发行版上,locate pg_hba.conf
应该为您提供文件的位置。Fedora 在这里有它:/var/lib/pgsql/data/pg_hba.conf
.另一方面,Ubuntu 在/etc/postgresql 中拥有它。(例如:/etc/postgresql/9.6/main/pg_hba.conf
(