配置简介:
说明: Celery的配置文件非常强大,支持在应用上设置,也可以使用一个独立的配置模块,具体需要调整的默认选项可通过http://docs.jinkan.org/docs/celery/configuration.html#configuration 获取.
# 方式一 : 直接在应用上设置,通过app.conf.update可一次性设置多个选项,常用于小型项目
1234567891011121314151617181920212223242526272829 | from celery import Celery app = Celery(__name__) app.conf.update( BROKER_URL = 'amqp://root:qwertyuiop@10.2.5.51:5672//' , CELERY_RESULT_BACKEND = 'redis://10.2.5.51:5123/0' , CELERY_TASK_SERIALIZER = 'msgpack' , CELERY_RESULT_SERIALIZER = 'json' , CELERY_TASK_RESULT_EXPIRES = 60 * 60 * 24 , CELERY_ACCEPT_COUNT = [ 'json' , 'msgpack' ] CELERYD_MAX_TASKS_PER_CHILD = 40 ) @app .task def add(x, y): return x + y |
说明: 将如上代码保存为app.py,然后打开命令行执行celery worker -A app -l info,查看运行情况即可.
# 方式二 : 采用独立模块设置,通过app.config_from_object来加载配置对象或模块,常用于中型项目
123456789101112131415 | from __future__ import absolute_import from celery import Celery app = Celery(__name__) app.config_from_object( 'config' ) @app .task def add(x, y): return x + y |
1234567 | BROKER_URL = 'amqp://root:qwertyuiop@10.2.5.51:5672//' CELERY_RESULT_BACKEND = 'redis://10.2.5.51:5123/0' CELERY_TASK_SERIALIZER = 'msgpack' CELERY_RESULT_SERIALIZER = 'json' CELERY_TASK_RESULT_EXPIRES = 60 * 60 * 24 CELERY_ACCEPT_CONTENT = [ 'json' , 'msgpack' ] CELERYD_MAX_TASKS_PER_CHILD = 40 |
说明: 将如上第一部分代码保存为app.py,第二部分代码保存到同级目录为config.py,然后打开命令行执行celery worker -A app -l info,查看运行情况即可.
# 方式三: 采用独立模块设置,且应用作为一个包存在,通过app.config_from_object来加载配置对象或模块,常用于大型项目
123456789 | C:/USERS/ADMINISTRATOR/DESKTOP/PROJ/WORK │ app.py │ prod_config.py │ test_config.py │ __init__.py │ └─notify email.py __init__.py |
说明: 如上结构为常用的包形式应用,app.py为Celery应用的入口文件,主要用于初始化Celery以及加载配置,test_config.py为测试环境配置文件,主要用于测试环境中覆盖生产环境,prod_config.py为正式环境配置,主要用于正式环境配置,__init__.py让work作为一个包,notify下为通知类的任务执行单元包,里面可以定义多个 不同方式的通知.
1234567891011121314151617 | from __future__ import absolute_import from celery import Celery app = Celery( __name__, include = [ 'work.notify.email' ] ) app.config_from_object( 'work.prod_config' ) |
12345678910111213141516171819202122 | from __future__ import absolute_import try : from .test_config import * except ImportError, _: pass |
12345678910111213141516 | from __future__ import absolute_import BROKER_URL = 'amqp://root:qwertyuiop@10.2.5.51:5672//' CELERY_RESULT_BACKEND = 'redis://10.2.5.51:5123/0' CELERY_TASK_SERIALIZER = 'msgpack' CELERY_RESULT_SERIALIZER = 'json' CELERY_TASK_RESULT_EXPIRES = 60 * 60 * 24 CELERY_ACCEPT_CONTENT = [ 'json' , 'msgpack' ] CELERYD_MAX_TASKS_PER_CHILD = 40 |
12345678910111213 | from __future__ import absolute_import from ..app import app @app .task def send_mail(usr, sub, msg): return 'mail succ.' |
说明: 将如上第一部分代码保存为app.py,第二部分代码保存为prod_config.py,第三部分代码保存为test_config.py,第四部分代码保存为email.py,然后打开命令行执行celery worker -A work.app -l info,查看运行情况即可,需要注意的是app.config_from_object的参数必须是配置文件的绝对导入名称.
登录乐搏学院官网http://www.learnbo.com/
或关注我们的官方微博微信,还有更多惊喜哦~

本文出自 “满满李 - 运维开发之路” 博客,请务必保留此出处http://xmdevops.blog.51cto.com/11144840/1885858