Celery Supervisor Virtualenv 找不到通过 github 安装的 pip 包
Celery Supervisor Virtualenv can't find pip packages installed via github
你好,我正在使用 supervisor 和 celery 来 运行 django 网络应用程序中的一些任务。 Celery 似乎有问题 finding/resolving,来自直接通过 github 安装的包的模型。
http://pip.readthedocs.org/en/stable/reference/pip_install/#vcs-support
如上所述,包 installed/cloned 进入 <virtualenv>/src
目录。我想知道我是否在使用 supervisord.conf
文件(例如 PYTHONPATH)的环境设置中遗漏了一些东西,或者是否有其他东西可以使用这些已安装的软件包。我收到
ValueError: Related model cannot be resolved
这似乎没有意义,因为整个应用程序在这些包上运行良好。
版本
芹菜 - 3.1.18
主管 - 3.0b2
supervisord.conf
[program:celeryd]
command=/home/path/to/virtualenv/celery worker -A moi --loglevel=info
stdout_logfile=/var/log/celery/celeryd.log
stderr_logfile=/var/log/celery/celeryd.error.log
directory=/path/to/app
virtualenv 看起来结构是这样的
virtualenv/
- bin/
- lib/
- share/
- src/github-installed-egg
错误
File "/home/ubuntu/moi/lib/python3.4/site-packages/django/db/models/fields/related.py", line 1600, in resolve_related_fields
raise ValueError('Related model %r cannot be resolved' % self.rel.to)
ValueError: Related model 'ndptc_core_courses.Course' cannot be resolved
Web 应用程序 运行正在使用 nginx 和 uwsgi,并且运行良好。 uwsgi 配置文件中的 virtualenv 设置使它起作用。模型是按名称声明的外键,而不是模型对象本身。来自通过 pypi 安装的包的模型工作正常,以及它只是安装在导致问题的 src 文件夹中的模型。
不确定这是否是您的问题,但常见的情况是将您的应用程序安装在 virtualenv 下并直接安装在主机上。
在这种情况下,您需要确保您的 celery 版本 运行 是安装在您的 virtualenv 中的版本,而不是可能安装在主机根环境中的版本。
例如,假设您的 virtualenv 位于 /opt/virtualenvs/foo
并且您的主管程序配置在 /etc/supervisor.d/foo.conf
。
[program:foo]
command=/opt/virtualenvs/foo/bin/celery -A celery.conf worker
...
您必须在 supervisor
配置中 "activate" virtualenv。为此,请将以下行添加到您的应用配置中:
environment=PATH="/opt/virtualenvs/foo/bin",VIRTUAL_ENV="/opt/virtualenvs/foo",PYTHONPATH="/opt/virtualenvs/foo/lib/python:/opt/virtualenvs/foo/lib/python/site-packages"
你好,我正在使用 supervisor 和 celery 来 运行 django 网络应用程序中的一些任务。 Celery 似乎有问题 finding/resolving,来自直接通过 github 安装的包的模型。
http://pip.readthedocs.org/en/stable/reference/pip_install/#vcs-support
如上所述,包 installed/cloned 进入 <virtualenv>/src
目录。我想知道我是否在使用 supervisord.conf
文件(例如 PYTHONPATH)的环境设置中遗漏了一些东西,或者是否有其他东西可以使用这些已安装的软件包。我收到
ValueError: Related model cannot be resolved
这似乎没有意义,因为整个应用程序在这些包上运行良好。
版本
芹菜 - 3.1.18
主管 - 3.0b2
supervisord.conf
[program:celeryd]
command=/home/path/to/virtualenv/celery worker -A moi --loglevel=info
stdout_logfile=/var/log/celery/celeryd.log
stderr_logfile=/var/log/celery/celeryd.error.log
directory=/path/to/app
virtualenv 看起来结构是这样的
virtualenv/
- bin/
- lib/
- share/
- src/github-installed-egg
错误
File "/home/ubuntu/moi/lib/python3.4/site-packages/django/db/models/fields/related.py", line 1600, in resolve_related_fields
raise ValueError('Related model %r cannot be resolved' % self.rel.to)
ValueError: Related model 'ndptc_core_courses.Course' cannot be resolved
Web 应用程序 运行正在使用 nginx 和 uwsgi,并且运行良好。 uwsgi 配置文件中的 virtualenv 设置使它起作用。模型是按名称声明的外键,而不是模型对象本身。来自通过 pypi 安装的包的模型工作正常,以及它只是安装在导致问题的 src 文件夹中的模型。
不确定这是否是您的问题,但常见的情况是将您的应用程序安装在 virtualenv 下并直接安装在主机上。
在这种情况下,您需要确保您的 celery 版本 运行 是安装在您的 virtualenv 中的版本,而不是可能安装在主机根环境中的版本。
例如,假设您的 virtualenv 位于 /opt/virtualenvs/foo
并且您的主管程序配置在 /etc/supervisor.d/foo.conf
。
[program:foo]
command=/opt/virtualenvs/foo/bin/celery -A celery.conf worker
...
您必须在 supervisor
配置中 "activate" virtualenv。为此,请将以下行添加到您的应用配置中:
environment=PATH="/opt/virtualenvs/foo/bin",VIRTUAL_ENV="/opt/virtualenvs/foo",PYTHONPATH="/opt/virtualenvs/foo/lib/python:/opt/virtualenvs/foo/lib/python/site-packages"