我有一个小应用程序,我想开始使用supervisord。我试过以下方法
我最初的shell脚本可以通过将PID保存在文本文件中来启动和停止celeri和Flask作为守护进程。由于supervisord会负责销毁它,所以我去掉了stop部分,并将脚本非守护程序化。在
经过反复试验,这些是脚本和conf duos,我认为有道理,但他们不起作用。在
Shell脚本
#!/bin/bash
if [[ $1 == "gunicorn" ]]
then
cd /home/abhirath/Desktop/Hitler
source env/bin/activate
python env/bin/gunicorn -b 0.0.0.0:3333 -w 3 gunicornserve:app
elif [[ $1 == "celery" ]]
then
cd /home/abhirath/Desktop/Hitler
source env/bin/activate
python env/bin/celery -A testrunner worker --concurrency=3 --loglevel=info
else
echo "Usage:-"
echo "To start celery:-"
echo "./hitler.sh celery"
echo "To start Gunicorn"
echo "./hitler.sh gunicorn"
fi
Conf文件
^{pr2}$没有shell文件
[group:hitler]
programs=gunicorn,celery
[program:gunicorn]
command=source env/bin/activate; python env/bin/gunicorn -b 0.0.0.0:3333 -w 2 gunicornserve:app;
directory=/home/abhirath/Desktop/Hitler
[program:celery]
command=source env/bin/activate; python env/bin/celery -A testrunner worker --concurrency=4 --loglevel=info;
directory=/home/abhirath/Desktop/Hitler
stderr_日志文件,autostart,autorestart,stopasgroup,killasgroup与#1相同
我收到一条消息说找不到命令源。我在同一个目录下的终端上尝试了相同的命令,它起作用了。在
Shell脚本
#!/bin/bash
if [[ $1 == "gunicorn" ]]
then
source env/bin/activate
python env/bin/gunicorn -b 0.0.0.0:3333 -w 3 gunicornserve:app
elif [[ $1 == "celery" ]]
then
source env/bin/activate
python env/bin/celery -A testrunner worker --concurrency=3 --loglevel=info
else
echo "Usage:-"
echo "To start celery:-"
echo "./hitler.sh celery"
echo "To start Gunicorn"
echo "./hitler.sh gunicorn"
fi
形态
[group:hitler]
programs=gunicorn,celery
[program:gunicorn]
command=./hitler.sh gunicorn
directory=/home/abhirath/Desktop/Hitler
[program:celery]
command=./hitler.sh celery
directory=/home/abhirath/Desktop/Hitler
stderr_日志文件,autostart,autorestart,stopasgroup,killasgroup与#1相同
我还尝试使用command=bash-c“command here”,尽管我觉得在上述所有情况下都不需要它。文档中提到了here。在
我得到了以下错误,我不知道为什么:在
Could not spawn
Process Exited too quickly
在#2的情况下,实际上不需要激活virtualenv。您可以将其更改为:
@MohammadAmin和@ymonad给出了很好的建议,我在回答中使用了这些建议。由于这里给出的解释,我找到了一个更简单的解决方案->;Supervising virtualenv django app via supervisor
脚本文件
因为我将项目目录指定为环境路径,所以不需要指定环境中Python解释器的绝对路径。在
监督员确认
^{pr2}$相关问题 更多 >
编程相关推荐