Celery 定时任务

包架构封装

​
project
    ├── celery_task     # celery包
    │   ├── __init__.py # 包文件
    │   ├── celery.py   # celery连接和配置相关文件,且名字必须交celery.py
    └── └── tasks.py    # 任务体函数文件
     
注意: 任务体代码文件要与celery.py文件在同一个包下
 
​

beat:

 beat也是一个socket,启动后会根据配置文件,自动添加任务(定时任务)给worker执行

启动worker:celery worker -A celery_task -l info -P eventlet
启动beat:celery beat -A celery_task -l info

使用场景

定时爬虫、定时更新(接口缓存更新)

案例

  • celery_task/celery.py
from celery import Celery

broker = 'redis://127.0.0.1:6379/14'  # 任务仓库
backend = 'redis://127.0.0.1:6379/15'  # 结果仓库
include = ['celery_task.tasks']  # 任务们,完成需求的函数所在的文件
app = Celery(broker=broker, backend=backend, include=include)

# 时区
app.conf.timezone = 'Asia/Shanghai'
# 是否使用UTC
app.conf.enable_utc = False


# 配置
from datetime import timedelta
from celery.schedules import crontab
app.conf.beat_schedule = {
    'jump_task': { # jump_task : 任务名(可以任意起)
        'task': 'celery_task.tasks.jump',  # task:任务源  jump: 任务函数
        'schedule': timedelta(seconds=3),  # schedule:周期添加任务的时间配置,每3秒添加一次任务
        # 'schedule': crontab(hour=8, day_of_week=1),  # 每周一早八点
        'args': (25, 3),  # args:任务函数所需参数
    }
}
  • celery_task/tasks.py
from .celery import app

@app.task
def jump(n1, n2):
    print("积:%s" % (n1 * n2))
    return n1 * n2

@app.task
def full(n1, n2):
    print("商:%s" % (n1 // n2))
    return n1 // n2

参考

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值