1. 下载celery
pip install celery
2.创建celery实例(flask框架中)
celery = Celery(__name__) # 创建实例
celery.config_from_object('amsapp.celery_conf') # 引用相关配置文件
3.配置文件
BROKER_URL = 'redis://0.0.0.0:6379/0'
CELERY_RESULT_BACKEND = 'redis://0.0.0.0:6379/1' # 任务返回信息存储地址
CELERY_TIMEZONE = 'Asia/Shanghai'# 启动时区设置
CELERY_ENABLE_UTC = True# 在5s内完成任务,否则执行该任务的worker将被杀死,任务移交给父进程CELERY_TASK_TIME_LIMIT = 5# 并发worker数
CELERYD_CONCURRENCY = 10# 单个任务的运行时间限制,否知会被杀死CELERYD_TASK_TIME_LIMIT = 10
CELERY_FORCE_EXECV = True # 非常重要,防止死锁#
CELERY_DISABLE_RATE_LIMITS = True # 任务发出后,经过一段时间还未收到acknowledge就将任务交给其他work执行
4.创建异步任务执行函数
@celery.task()
def task_001():
"相关操作"
...............
5.在flask框架中使用task
from yyyyy import task_001
with current_app.app_context():
task_001.delay()
6.启动celery任务
普通启动:
celery -A start:celery worker -l info -f logs/celery.log
######start是去后缀的启动文件名称######
守护进程启动:
celery multi start w1 -A start:celery -l info -f logs/celery.log
######第一个start表示启动,还有stop,reload两个操作;第二个start是去后缀的启动文件名称#########
7.优雅kill掉celery程序
1.ps -ef|grep celery|grep -v grep|cut -c 9-15|xargs kill -9
2.celery multi stop w1 -A start:celery -l info -f logs/celery.log