如何在Supervisor-Linux中为被监督进程添加延迟

cpjpxq1n  于 2023-01-20  发布在  Linux
关注(0)|答案(3)|浏览(235)

我添加了一个使用python的cassandra库的bottle服务器,但它退出时显示了以下错误:
Bottle FATAL Exited too quickly (process log may have details)
日志显示:
File "/usr/local/lib/python2.7/dist-packages/cassandra/cluster.py", line 1765, in _reconnect_internal raise NoHostAvailable("Unable to connect to any servers", errors)
所以我尝试使用supervisorctl start Bottle手动运行它,然后它启动了没有问题。结论= Bottle服务启动太快(在所需的cassandra监督服务启动之前):需要延迟!

0x6upsns

0x6upsns1#

这是我使用的:

[program:uwsgi]
command=bash -c 'sleep 5 && uwsgi /etc/uwsgi.ini'
7jmck4yq

7jmck4yq2#

我对sleep的破解不够满意,我创建了一个启动脚本,并从那里启动了supervisorctl start processname

[program:startup]
command=/startup.sh
startsecs = 0
autostart = true
autorestart = false
startretries = 1
priority=1

[program:myapp]
command=/home/website/venv/bin/gunicorn /home/website/myapp/app.py
autostart=false
autorestart=true
process_name=myapp

startup.sh

#!/bin/bash
sleep 5
supervisorctrl start myapp

这样,管理员将启动启动脚本一次,这将在5秒后启动myapp,请注意myapp上的autostart=falseautorestart=true

6rqinv9w

6rqinv9w3#

我也遇到过类似的问题,使用supervisorctl启动64个python rq-worker进程时,每次重启都会引发CPU和RAM警报。

command=/bin/bash -c "sleep %(process_num)02d && virtualenv/bin/python3 manage.py rqworker --name %(program_name)s_my-rq-worker_%(process_num)02d default low"

基本上,在运行python命令之前,我会休眠N秒,其中N是进程号,这基本上意味着我的supervisor将每秒启动一个rq-worker进程。

相关问题