celery 5.0后启动需要使用 celery 命令行启动服务,比如我们启动服务需要使用
celery -A task.celery_task worker --loglevel=info --concurrency=1
我需要在程序启动前检查是否能正常运行的需求,需要启动前增加检查运行环境是否正常。
celery 命令其实就是一个python文件,在bin目录下有一个celery.py文件,
import re
import sys
from celery.__main__ import main
from pywkmisc import HttpClientUtils, get_config # 这个是自己写的包 https://gitee.com/lovelong1/pywktools
# python celeryd.py -A task.celery_task worker --loglevel=info --concurrency=1
def check_url(url, fname):
try:
HttpClientUtils.request_head(url)
except Exception as e:
print('{fname}无法访问接口{url},系统退出'.format(url=url,fname=fname))
import sys
sys.exit(0)
def close():
print('close')
if __name__ == '__main__':
#没有参数,手动增加
if len(sys.argv) == 1:
sys.argv = sys.argv + '-A task.celery_task worker --loglevel=info --concurrency=1'.split(' ')
domain_rules_url = get_config('domain_rules_url')
broker_check_url = get_config('broker_check_url')
check_url(broker_check_url, 'RabbitMQ')
check_url(domain_rules_url, '获取网页接口')
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())
启动方式两种一个是直接启动
python3 celery_taskd.py
另外一个增加参数
python3 celery_taskd.py -A task.celery_task worker --loglevel=info --concurrency=1
来源:oschina
链接:https://my.oschina.net/lovelong1/blog/4894410