菜鸟搭建celery环境

前言

最近开始接触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,这里就简单记录一下过程好了

我很多操作都是参照这篇博客进行的http://blog.csdn.net/huoyunshen88/article/details/33738393

我的基础环境是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格式的,很好理解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值