Celery:分布式系统 异步任务队列
功能:1.异步任务 2.定时调度任务
消息中间件:Redis/RabbitMQ
任务执行单元:Worker
任务结果存储:Task result store存储Work执行任务的结果
异步任务
定时任务
Task:就是任务,有异步任务和定时任务
Broker:中间人,接收生产者发来的消息即Task,将任务存入队列
Worker:执行任务的单元,它实时监控消息队列,如果有任务就获取任务并执行它。
Beat:定时任务调度器,根据配置定时将任务发送给Broker。
Backend:用于存储任务的执行结果。
https://www.cnblogs.com/pyedu/p/12461819.html
~~~celery_task~~~
#
# import celery
# import time
# # 异步存储结果存储位置
# backend='redis://127.0.0.1:6379/1'
# # 消息中间件
# broker='redis://127.0.0.1:6379/2'
# # 名字,数据库存储结果,消息中间件
# cel=celery.Celery('test',backend=backend,broker=broker)
#
# # 异步任务一
# @cel.task
# def send_email(name):
# print("向%s发送邮件..."%name)
# # time.sleep(5)
# print("向%s发送邮件完成"%name)
# return "ok"
#
# # 异步任务一
# @cel.task
# def send_QQ(name):
# print("向%s发送QQ..."%name)
# time.sleep(5)
# print("向%s发送QQ完成"%name)
# return "ok"
#
#
# # 终端中运行,使用celery查看情况
# # celery worker -A celery_task -l info
# # celery 5.0以上用以下命令
# # celery命令 worker进程 -A执行的文件:celery_task -l info输出info日志
# # celery -A celery_task worker -l info
~~~produce_task.py~~~
# # 导入celery_task中的任务
from celery_task import send_email,send_QQ
# # delay
# 调出delay方法
result = send_email.delay("yuan")
print(result.id)
result2 = send_QQ.delay("alex")
print(result2.id)
# # 直接运行这个文件,可以获得两串字符:
# # e4c59085-953f-4d8e-b1a3-fb31dfa09e2d
# # b3ffe3b7-55b6-4a28-8a56-64a5b8901335
#
# # 异步请求做到几乎同时
#
#