菜鸟搭建celery环境
2016-01-14 19:43
183 查看
前言
最近开始接触python,并且在业务需要的情况下开始寻找任务调度的框架。最后选择了celery,在这里记录一下搭建的过程。服务器是debian系统。
官方文档:http://www.celeryproject.org/
github:https://github.com/celery/celery
安装环境
pip install celery pip install flower #监控软件,包括图形界面 pip install supervisor #linux进程管理工具
这里我的broker使用的是redis,安装过程略
环境配置
redis配置
建立一个文件夹,在里面添加redis.conf(修改端口为8765)和start.sh# start.sh cd /opt/redis/8765/ /usr/bin/redis-server ./redis.conf
设置系统自启动
vi /etc/rc.local /bin/bash /opt/redis/8765/start.sh #添加此行,系统自启动
supervisor配置
# 生成默认配置文件 echo_supervisord_conf > /etc/supervisord.conf mkdir /etc/supervisord.conf.d vi supervisord.conf # 具体内容可以参考官方的[例子](https://github.com/celery/celery/tree/master/extra/supervisord), vi celery.conf # 同上
使用 supervisord -c supervisord.conf启动
关键操作
通过反复看官方文档,在这里记录下自己使用到的并测试了代码# 创建一个应用 app = Celery('proj', broker='redis://127.0.0.1:6379/0', backend='redis://127.0.0.1:6379/0', include=['proj.tasks'])
def my_on_failure(self, exc, task_id, args, kwargs, einfo): pass app.conf.update( CELERY_TASK_RESULT_EXPIRES=30, # 结果保存时间 CELERY_TASK_SERIALIZER = 'json', # 格式序列化 CELERY_RESULT_SERIALIZER = 'json', CELERY_TIMEZONE = 'Asia/Shanghai', CELERY_ANNOTATIONS = {'*': {'on_failure': my_on_failure}} # 自定义错误处理,可参考地址:http://docs.celeryproject.org/en/latest/userguide/tasks.html#abstract-classes )
# 定时任务 app.conf.CELERYBEAT_SCHEDULE = { 'add-every-1-min': { 'task': 'proj.tasks.add', 'schedule': timedelta(seconds=10), # 可以使用小数 # 'schedule':crontab(minute=9,hour=18,day_of_month='*'), #支持crontab方式 'args': (16,16) # 传递参数 }, } #具体可参考:http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html#crontab-schedules
#错误重试 # 参考地址:http://docs.celeryproject.org/en/latest/reference/celery.app.task.html#celery.app.task.Task.retry @app.task(name='task.add',bind=True) def add(self,x, y): # print 0 try: 1/0 except Exception as exc: raise self.retry(countdown=5,max_retries=6, exc=exc) return x + y
Queue 我还没有用到,有时间再加进去
后续
这段时间准备尝试一下queue相关知识,所以搭建了rabbitmq,这里就简单记录一下过程好了我很多操作都是参照这篇博客进行的/article/1989026.html
我的基础环境是debian,我的安装过程很简单
1,apt-get install erlang erlang-nox
2,下载 rabbit.deb,去官网找即可(http://www.rabbitmq.com/install-debian.html),到相应目录后使用 dpkg -i *.deb进行安装
3,参照http://celery.readthedocs.io/en/latest/userguide/routing.html进行修改
其他:
在使用的过程中主要需要注意两点
1,需要先 了解一下AMPQ的基本概念,然后参考http://www.rabbitmq.com/getstarted.html 进行一下操作,这样才能明白exchange,queue等参数的概念和意义
2,在部署的时候如果想改变默认端口,以及rabbitmq-management的默认端口,需要修改rabbitmq.conf(这个文件默认是没有的,需要自己创建),可以去https://github.com/rabbitmq/rabbitmq-server/blob/master/docs/rabbitmq.config.example下载一份,里面的参数基本就是json格式的,很好理解
相关文章推荐
- curl 指定域名加ip访问
- OpenWrt下ifconfig各接口说明
- dock 下安装ruby搭建rails 服务
- Java学习篇之---基本数据类型
- EditText判断用户输入完成,然后进行操作解决方案
- youcompleteme install and configure
- 百度的UEditor富文本控件的使用
- Spring 核心 Ioc(DI)
- 指针2
- jQuery 对象和 json 之间的转换
- Elementary OS Freya 体验
- C++基础篇 -- vector的resize函数和reserve函数
- 关于胖Model 和 瘦Model
- [文章摘要]Extracting semantics of individual places from movement data by analyzing temporal patterns of
- Android的multidex带来的性能问题-减慢app启动速度
- virtualenv 管理python 环境
- [工作小结]PHP和其他编程语言联合开发网站的一种方法
- JAVA泛型详解
- 冬天,这“素三宝”一定要吃!比肉强多了!
- 其实你不知道MultiDex到底有多坑