在 Django 应用程序的服务器上使用 Redis 设置 Celery

Setting up Celery with Redis on a server for a Django app

我正在尝试设置我的 django 项目以使用 Celery 和 Redis。我在本地 运行 没有问题,但我无法在生产服务器上运行它。

我的主机建议在屏幕中使用 unixsocket 和 运行 redis 设置 Redis:

这一切都有效,当我 运行 redis 我得到:

* The server is now ready to accept connections at /here-comes-my-path/redis.sock

现在我有问题:

  1. 如何验证连接? redis-cli -p 0 returns Could not connect to Redis at 127.0.0.1:0: Can't assign requested address not connected>
  2. 如何启动 celery worker? 运行 celery -A rbwpredictor worker -l info returns(我已经修复了敏感数据):

    Traceback (most recent call last):
    

    文件“/usr/home/xxxx/.virtualenvs/xxxx/bin/celery”,第 6 行,在 来自 celery.main import main 文件“/home/xxx/domains/xxxx/public_python/xxxx/celery.py”,第 6 行,位于 从芹菜进口芹菜 导入错误:无法导入名称 'Celery'

我在 settings.py 中的 Celery 设置:

CELERY_RESULT_BACKEND = 'django-db'
CELERY_STATUS_PENDING = 'PENDING'
CELERY_STATUS_STARTED = 'STARTED'
CELERY_STATUS_RETRY = 'RETRY'
CELERY_STATUS_FAILURE = 'FAILURE'
CELERY_STATUS_SUCCESS = 'SUCCESS'

如上所述,本地一切正常,这是我在努力解决的服务器上的配置。

您已将 redis 配置为通过 unix 套接字而不是通过标准端口进行通信

要连接 redis-cli,您可以使用

redis-cli -s /here-comes-my-path/redis.sock

你应该重新配置 redis.conf 或者只设置 BROKER_URL

BROKER_URL = 'redis+socket:///here-comes-my-path/redis.sock'