Celery Supervisor Virtualenv无法通过github

时间:2015-11-10 22:24:05

标签: python django celery python-3.4 supervisor

您好我正在使用芹菜主管,以便在django Web应用程序中运行某些任务。 Celery似乎在查找/解析问题,从直接通过github安装的软件包中建模。

http://pip.readthedocs.org/en/stable/reference/pip_install/#vcs-support

这表明软件包已安装/克隆到<virtualenv>/src目录中。我想知道我的环境设置中是否遗漏了supervisord.conf文件,例如PYTHONPATH或其他东西,以使这些已安装的软件包可用。我正在接受

  

ValueError:相关模型无法解析

这似乎没有意义,因为整个应用程序可以正常使用这些软件包。

版本

芹菜 - 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文件夹中导致问题的模型。

described in django docs here

2 个答案:

答案 0 :(得分:3)

不确定这是否是您的问题,但常见的情况是将您的应用安装在直接安装在主机上的virtualenv和supervisor下。

在这种情况下,您需要确保您运行的芹菜版本是virtualenv中安装的版本,而不是可能安装在主机根环境中的版本。

例如,假设您的virtualenv位于/opt/virtualenvs/foo,并且您的主管程序已在/etc/supervisor.d/foo.conf配置。

[program:foo]
command=/opt/virtualenvs/foo/bin/celery -A celery.conf worker
...

答案 1 :(得分:2)

您必须在supervisor配置中“激活”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"