使用supervisord运行django自定义管理命令

前端之家收集整理的这篇文章主要介绍了使用supervisord运行django自定义管理命令前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想使用supervisord为我的Django项目运行一些命令,但我不断收到以下错误

supervisor.log:

2012-05-18 17:52:15,784 INFO spawnerr: can't find command 'source'

如果我删除“source”命令,日志显示相同的错误:找不到命令’python’.

supervisord.conf摘录:

[program:django]
directory=/home/mf/projects/djangopj/
command=beanstalkd -l 127.0.0.1 -p 11300
command=source /home/mf/virtualenvs/env/bin/activate
command=python manage.py command1
command=python manage.py command2
user=mf
autostart=true
autorestart=true

我尝试删除目录并添加命令的绝对路径,但我不断收到相同的错误.

我使用以下命令运行supervisord:

supervisord -c supervisord.conf -l supervisor.log

解决方法

source命令仅在bash中可用,supervisor命令由sh运行.我建议使用脚本来执行命令:

/etc/supervisor/conf.d/my_app.conf

[program:my_app]
command = bash /path/to/app/init.sh
directory = /path/to/app/
user = ubuntu
autostart=true
autorestart=true

/path/to/app/init.sh

#!/bin/bash

beanstalkd -l 127.0.0.1 -p 11300
source /home/mf/virtualenvs/env/bin/activate    
python manage.py command1
python manage.py command2

唯一的问题是主管只能控制脚本,而不能控制命令.如果您希望主管管理并保持特定进程的活动,我建议您在bash init文件中使用exec,这样主管就可以控制您的进程.例如.

/path/to/app/init.sh

#!/bin/bash

exec beanstalkd -l 127.0.0.1 -p 11300

您可能会发现这很有用:http://sjsnyder.com/managing-virtualenv-apps-with-supervisor

猜你在找的Linux相关文章