celery模块

celery常常用来做定时任务。

celery 文档:http://docs.jinkan.org/docs/celery/
安装celery:

pip install celery

何为任务队列?

任务队列是一种在线程或机器间分发任务的机制。

消息队列的输入是工作的一个单元,称为任务,独立的职程(Worker)进程持续监视队列中是否有需要处理的新任务。

Celery 用消息通信,通常使用中间人(Broker)在客户端和职程间斡旋。这个过程从客户端向队列添加消息开始,之后中间人把消息派送给职程。

Celery 系统可包含多个职程和中间人,以此获得高可用性和横向扩展能力。

Celery 是用 Python 编写的,但协议可以用任何语言实现。迄今,已有 Ruby 实现的 RCelery 、node.js 实现的 node-celery 以及一个 PHP 客户端 ,语言互通也可以通过 using webhooks 实现。


这里写图片描述
这里写图片描述

执行任务的返回值:

aa =adds.delay(11, 44)
print aa.ready() #当任务完成时是True ,否则FALSE
print aa.result  #立即返回结果,如果没有结果返回none
print aa.get()  #阻塞等待返回值

定时任务配置:

#celery配置信息
BROKER_URL = 'redis://127.0.0.1:6379/0'
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/1'
CELERY_TIMEZONE = 'Asia/Shanghai'  # 设置时区
from datetime import timedelta
CELERYBEAT_SCHEDULE = {
    'add-5-seconds': {          #任务名称
        'task': 'create_app.adds', #设置执行的任务
        'schedule': timedelta(seconds=5),  #设置间隔时间
        'args': (30, 16)    #设置参数
    }
}

启动worker, -B可以同时启动定时任务:

$ celery worker -A celery_test_module -l info -c 3 -B

启动定时任务:

$ celery -A create_app.celery beat -l info

启动worker:

celery worker -A create_app.celery --loglevel=info --concurrency=5

同时启动beat 和worker:

celery worker -A create_app.celery --beat --loglevel=info --concurrency=5

可以开两个窗口,分别启动worker可以集群方式执行任务

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值