celery常用配置总结 【celery配置worker数和单个worker最多执行任务数】
来源:互联网 发布:苏州软件项目经理招聘 编辑:程序博客网 时间:2024/06/05 07:50
我用的setting配置:
#!/usr/bin/env pythonimport randomfrom kombu import serializationfrom kombu import Exchange, Queueimport ansibleServiceserialization.registry._decoders.pop("application/x-python-serialize")broker_url = ansibleService.getConfig('/etc/ansible/rabbitmq.cfg', 'rabbit', 'broker_url')celeryMq = ansibleService.getConfig('/etc/ansible/rabbitmq.cfg', 'celerymq', 'celerymq')SECRET_KEY='top-secrity'CELERY_BROKER_URL = broker_urlCELERY_RESULT_BACKEND = broker_urlCELERY_TASK_RESULT_EXPIRES = 1200CELERYD_PREFETCH_MULTIPLIER = 4CELERYD_CONCURRENCY = 1CELERYD_MAX_TASKS_PER_CHILD = 1CELERY_TIMEZONE = 'CST'CELERY_TASK_SERIALIZER='json'CELERY_ACCEPT_CONTENT=['json']CELERY_RESULT_SERIALIZER='json'CELERY_QUEUES = ( Queue(celeryMq, Exchange(celeryMq), routing_key=celeryMq),)CELERY_IGNORE_RESULT = TrueCELERY_SEND_EVENTS = FalseCELERY_EVENT_QUEUE_EXPIRES = 60
rmq作为消息队列。
并发worker数25
每个worker最多执行一个任务就销毁。(执行完全任务,进程销毁重建,释放内存)
# -*- coding:utf-8 -*- from datetime import timedeltafrom settings import REDIS_HOST, REDIS_PORT, REDIS_PASSWORD, REDIS_DB_NUM# 某个程序中出现的队列,在broker中不存在,则立刻创建它CELERY_CREATE_MISSING_QUEUES = TrueCELERY_IMPORTS = ("async_task.tasks", "async_task.notify")# 使用redis 作为任务队列BROKER_URL = 'redis://:' + REDIS_PASSWORD + '@' + REDIS_HOST + ':' + str(REDIS_PORT) + '/' + str(REDIS_DB_NUM)#CELERY_RESULT_BACKEND = 'redis://:' + REDIS_PASSWORD + '@' + REDIS_HOST + ':' + str(REDIS_PORT) + '/10'CELERYD_CONCURRENCY = 20 # 并发worker数CELERY_TIMEZONE = 'Asia/Shanghai'CELERYD_FORCE_EXECV = True # 非常重要,有些情况下可以防止死锁CELERYD_PREFETCH_MULTIPLIER = 1CELERYD_MAX_TASKS_PER_CHILD = 100 # 每个worker最多执行万100个任务就会被销毁,可防止内存泄露# CELERYD_TASK_TIME_LIMIT = 60 # 单个任务的运行时间不超过此值,否则会被SIGKILL 信号杀死 # BROKER_TRANSPORT_OPTIONS = {'visibility_timeout': 90}# 任务发出后,经过一段时间还未收到acknowledge , 就将任务重新交给其他worker执行CELERY_DISABLE_RATE_LIMITS = True # 定时任务CELERYBEAT_SCHEDULE = { 'msg_notify': { 'task': 'async_task.notify.msg_notify', 'schedule': timedelta(seconds=10), #'args': (redis_db), 'options' : {'queue':'my_period_task'} }, 'report_result': { 'task': 'async_task.tasks.report_result', 'schedule': timedelta(seconds=10), #'args': (redis_db), 'options' : {'queue':'my_period_task'} }, #'report_retry': { # 'task': 'async_task.tasks.report_retry', # 'schedule': timedelta(seconds=60), # 'options' : {'queue':'my_period_task'} #},}################################################# 启动worker的命令# *** 定时器 ***# nohup celery beat -s /var/log/boas/celerybeat-schedule --logfile=/var/log/boas/celerybeat.log -l info &# *** worker ***# nohup celery worker -f /var/log/boas/boas_celery.log -l INFO &################################################
以上是我在工作的一些总结。
同时其它需要交代的是
CELERYD_TASK_TIME_LIMIT
BROKER_TRANSPORT_OPTIONS
使用需要十分谨慎, 如果CELERYD_TASK_TIME_LIMIT设置的过小,会导致task还没有执行完,worker就被杀死;BROKER_TRANSPORT_OPTIONS 设置的过小,task有可能被多次反复执行。
阅读全文
0 0
- celery常用配置总结 【celery配置worker数和单个worker最多执行任务数】
- celery常用配置总结
- Celery源码分析(二)--------任务执行单元Worker的流程
- 关于celery worker的参数
- celery的配置和使用
- Celery消息队列----配置定时任务
- Celery源码分析(一)-------------从命令执行到生成Worker
- celery系列 一 celery 相关配置
- CELERY 消息队列配置
- celery环境配置
- celery配置使用
- celery深入配置
- celery 配置手册
- Celery 学习笔记(3)- 任务和任务执行
- Celery教程-------------以守护进程方式运行worker
- airflow worker报错raised unexpected:airflowexception('celery command failed')
- django+celery+RabbitMQ 环境配置
- celery 中任务的结构以及执行
- linux配置php扩展GD库等
- 集成支付平台是什么?
- mtk--gpio调试
- 多态
- 设置vim的默认模板文件
- celery常用配置总结 【celery配置worker数和单个worker最多执行任务数】
- 通达OA MQ和Redis服务无法启动问题的处理(图文)
- 编程十诫
- 【读书笔记】机器学习实战 第7章 7.7节非均衡分类问题
- python调用MonkeyRunnerAPI编写app录制脚本
- 西安达刚公路机电科技有限公司董事长李太杰简介
- 基于php的记录网页访问量的小代码
- 图像的峰值信噪比(PSNR)的计算方法
- 插入排序