python启动celery进行运行环境检测

有些话、适合烂在心里 提交于 2021-01-13 14:37:57

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
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!