celery 常用配置

  1. # -*- coding:utf-8 -*-                                                                                                                                                    
  2. from datetime import timedelta  
  3. from settings import REDIS_HOST, REDIS_PORT, REDIS_PASSWORD, REDIS_DB_NUM  
  4.   
  5.   
  6. # 某个程序中出现的队列,在broker中不存在,则立刻创建它  
  7. CELERY_CREATE_MISSING_QUEUES = True  
  8.   
  9. CELERY_IMPORTS = ("async_task.tasks""async_task.notify")  
  10.   
  11. # 使用redis 作为任务队列  
  12. BROKER_URL = 'redis://:' + REDIS_PASSWORD + '@' + REDIS_HOST + ':' + str(REDIS_PORT) + '/' + str(REDIS_DB_NUM)  
  13.   
  14. #CELERY_RESULT_BACKEND = 'redis://:' + REDIS_PASSWORD + '@' + REDIS_HOST + ':' + str(REDIS_PORT) + '/10'  
  15.   
  16. CELERYD_CONCURRENCY = 20  # 并发worker数  
  17.   
  18. CELERY_TIMEZONE = 'Asia/Shanghai'  
  19.   
  20. CELERYD_FORCE_EXECV = True    # 非常重要,有些情况下可以防止死锁  
  21.   
  22. CELERYD_PREFETCH_MULTIPLIER = 1  
  23.   
  24. CELERYD_MAX_TASKS_PER_CHILD = 100    # 每个worker最多执行万100个任务就会被销毁,可防止内存泄露  
  25. # CELERYD_TASK_TIME_LIMIT = 60    # 单个任务的运行时间不超过此值,否则会被SIGKILL 信号杀死   
  26. # BROKER_TRANSPORT_OPTIONS = {'visibility_timeout': 90}  
  27. # 任务发出后,经过一段时间还未收到acknowledge , 就将任务重新交给其他worker执行  
  28. CELERY_DISABLE_RATE_LIMITS = True     
  29.   
  30. # 定时任务  
  31. CELERYBEAT_SCHEDULE = {  
  32.     'msg_notify': {  
  33.         'task''async_task.notify.msg_notify',  
  34.         'schedule': timedelta(seconds=10),  
  35.         #'args': (redis_db),  
  36.         'options' : {'queue':'my_period_task'}  
  37.     },  
  38.     'report_result': {  
  39.         'task''async_task.tasks.report_result',  
  40.         'schedule': timedelta(seconds=10),  
  41.       #'args': (redis_db),  
  42.         'options' : {'queue':'my_period_task'}  
  43.     },  
  44.     #'report_retry': {  
  45.     #    'task': 'async_task.tasks.report_retry',  
  46.     #    'schedule': timedelta(seconds=60),  
  47.     #    'options' : {'queue':'my_period_task'}  
  48.     #},  
  49.   
  50. }  
  51. ################################################  
  52. # 启动worker的命令  
  53. # *** 定时器 ***  
  54. # nohup celery beat -s /var/log/boas/celerybeat-schedule  --logfile=/var/log/boas/celerybeat.log  -l info &  
  55. # *** worker ***  
  56. # nohup celery worker -f /var/log/boas/boas_celery.log -l INFO &  
  57. ################################################  



同时其它需要交代的是

CELERYD_TASK_TIME_LIMIT

BROKER_TRANSPORT_OPTIONS

使用需要十分谨慎, 如果CELERYD_TASK_TIME_LIMIT设置的过小,会导致task还没有执行完,worker就被杀死;BROKER_TRANSPORT_OPTIONS 设置的过小,task有可能被多次反复执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值