与postgresql有关的芹菜错误,而django可以

celery error in connection with postgresql while django can

我在我的 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"

我在主机上工作,主机 OS 是 Ubuntu 18.04。谢谢

此问题与 Celery 无关 - 这显然是典型的 PostgreSQL 访问控制问题。

您的 PostgreSQL 服务器似乎允许 hamclassy 角色(用户)从运行 Django 的机器进行连接,但不允许您的 Celery worker 进行访问。寻找问题解决方案的正确位置是 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