【发布时间】:2017-08-10 15:18:13
【问题描述】:
所以我已经为此苦苦挣扎了一段时间,但似乎找不到解决方案。
我已经安装了芹菜
pip3 install --user celery
在我尝试按照官方文档 http://docs.celeryproject.org/en/latest/userguide/daemonizing.html 运行 celery worker 并作为守护进程运行之前,一切都运行良好
我遇到的具体问题是守护进程的配置文件需要到 celery 的完整路由,我已经在这样的文件中找到并指定了它
CELERY_BIN="/home/my_home/.local/bin/celery"
但是当我运行守护进程时,它说我没有名为 Celery 的模块
me@my_computer:/etc/default$ sudo /etc/init.d/celeryd start
celery init v10.1.
Using config script: /etc/default/celeryd
Traceback (most recent call last):
File "/home/my_home/.local/bin/celery", line 7, in <module>
from celery.__main__ import main
ImportError: No module named 'celery'
尝试不同的东西我想我已经找到了问题,显然 Celery 守护进程正在尝试使用 python 2 运行 celery,但由于我为 python 3 安装了它,它说它找不到它。有关如何解决此问题或我是否应该尝试其他方法的任何线索?
附加输出:
Python 2:
Python 2.7.6 (default, Oct 26 2016, 20:32:47)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from celery.__main__ import main
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named celery.__main__
Python 3:
Python 3.4.3 (default, Nov 17 2016, 01:11:57)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from celery.__main__ import main
>>>
【问题讨论】:
-
您可以使用venv 将调用容器化,这样就没有其他可用的python 二进制文件了。
-
@RossRogers 抱歉,这是一个愚蠢的问题。我对 venvs 不是很熟悉,我正在使用 celery 和 django 服务器,要运行这个守护进程,我应该将整个东西容器化还是只容器化 celery?
-
我使用 venv 统一运行我的 django 环境,因为这样您就可以升级一个应用程序的依赖项而无需升级所有依赖项。您没有必须将整个应用程序容器化,但是您的系统环境可能会与您的 venv 不同步,从而导致奇怪的问题。在同一个 venv 中容器化 django 和 celery 可能会更好。
-
@RossRogers 好的,感谢您的明确解释。我会尝试并通知您结果。
-
@RossRogers 你的方法是正确的。如果您喜欢添加答案,我会选择它作为正确的答案。
标签: python linux django celery daemon