【问题标题】:Python Import Error with SupervisordSupervisord 的 Python 导入错误
【发布时间】:2015-09-20 12:48:18
【问题描述】:

我正在使用 supervisord 将 celery 作为守护进程运行,但它给了我错误 ImportError: No module named tasks worker。我可以在没有supervisord的情况下从shell运行它。我的 supervisord 配置文件如下:

[program:celery]
directory=/home/yongfengzhang/videomaker
environment=PYTHONPATH="/home/yongfengzhang/videomaker:/home/yongfengzhang/videomaker/videomaker:$PYTHONPATH",DJANGO_SETTINGS_MODULE="videomaker.settings"
;command=/home/yongfengzhang/Envs/videomake/bin/celery -A "tasks worker" --loglevel=INFO --concurrency=4
command=celery -A "tasks worker" --loglevel=INFO --concurrency=4
process_name=%(program_name)s ; process_name expr (default %(program_name)s)
numprocs=1
user=yongfengzhang                  ; setuid to this UNIX account to run the program
stdout_logfile=/home/yongfengzhang/logs/celery/celery.log
stderr_logfile=/home/yongfengzhang/logs/celery/celery.err
autostart=true
autorestart=true

所以在/home/yongfengzhang/videomaker 下我有一个tasks.py,它定义了 celery 实例和任务函数(此处未显示):

app = Celery('tasks', backend='redis://localhost', broker='amqp://myuser:bloomsky@localhost:5672/myvhost')

在这个文件夹(~/videomaker)中直接运行 celery 时,一切都很好。 Envs/videomake 是我的 virtualenv 所在的位置。文件夹中有一个__init__.py。任何输入将不胜感激。非常感谢。

【问题讨论】:

    标签: python django celery python-import supervisord


    【解决方案1】:

    我刚刚发现这里出了什么问题。您不能使用双引号对参数进行分组。执行以下操作应该可以:

    command=/home/yongfengzhang/Envs/videomake/bin/celery -A tasks worker --loglevel=INFO --concurrency=4
    

    参数tasks worker 不应使用双引号。谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-07
      • 1970-01-01
      • 1970-01-01
      • 2016-11-04
      • 2017-08-21
      • 1970-01-01
      相关资源
      最近更新 更多