在 Django 应用程序的服务器上使用 Redis 设置 Celery
Setting up Celery with Redis on a server for a Django app
我正在尝试设置我的 django 项目以使用 Celery 和 Redis。我在本地 运行 没有问题,但我无法在生产服务器上运行它。
我的主机建议在屏幕中使用 unixsocket 和 运行 redis 设置 Redis:
- 端口 0
- unixsocket /path/redis.sock
这一切都有效,当我 运行 redis 我得到:
* The server is now ready to accept connections at /here-comes-my-path/redis.sock
现在我有问题:
- 如何验证连接?
redis-cli -p 0
returns
Could not connect to Redis at 127.0.0.1:0: Can't assign requested address
not connected>
如何启动 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'
我正在尝试设置我的 django 项目以使用 Celery 和 Redis。我在本地 运行 没有问题,但我无法在生产服务器上运行它。
我的主机建议在屏幕中使用 unixsocket 和 运行 redis 设置 Redis:
- 端口 0
- unixsocket /path/redis.sock
这一切都有效,当我 运行 redis 我得到:
* The server is now ready to accept connections at /here-comes-my-path/redis.sock
现在我有问题:
- 如何验证连接?
redis-cli -p 0
returnsCould not connect to Redis at 127.0.0.1:0: Can't assign requested address not connected>
如何启动 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'