Celery:是一个简单可靠的分布式系统用于处理大量信息,专注于实时处理的任务队列,同时也 支持任务调度,python编写
- 队列:
- 消息队列 :用于存放执行结果的
- 任务队列 :用于存放任务
- 启动命令
- Celery -A celery_tasks.celery -l info(生产者)
- Celery -A celery_tasks.tasks worker -l info -P eventlet(消费者)
- celery定时任务
- (生产者)
-
from celery import Celery from celery.schedules import crontab,timedelta #这是创建一个定时任务对象 celery_app = Celery( 'celery_app', #redis存储创建的任务和消费者处理结果,可以用其他的如:rabbitmq…… backend='redis://127.0.0.1:6379/0', broker='redis://127.0.0.1:6379/0', include=['celery_tasks.tasks', ] ) #设置时区 celery_app.conf.timezone = 'Asia/Shanghai' #不采用世界标准时间 celery_app.conf.enable_utc=False celery_app.conf.beat_schedule={ #任务名称随便写 '测试':{ #任务的位置精确到装饰器所装饰的函数 'task':'celery_tasks.tasks.run', #时间可以是timedelta,和 crontrb 'schedule':timedelta(seconds=3) } } # 每分钟执行一次 # crontab() # 每天凌晨十二点执行 # crontab(minute=0, hour=0) # 每十五分钟执行一次 # crontab(minute='*/15') # 每周日的每一分钟执行一次 # crontab(minute='*',hour='*', day_of_week='sun') # 每周三,五的三点,七点和二十二点没十分钟执行一次 # crontab(minute='*/10',hour='3,17,22', day_of_week='thu,fri')
-
- Celery(消费者)
-
#导入后直接装饰到想执行的函数 from celery_tasks.celery import celery_app @celery_app.task def run(): print('hello world!')
-
- (生产者)