Celery-------异步任务

1.什么是Celery?
  Celery 是基于Python实现的模块, 用于执行异步定时周期任务的
  其结构的组成是由
      1.用户任务 app
      2.管道 broker 用于存储任务 官方推荐 redis rabbitMQ  / backend 用于存储任务执行结果的
      3.员工 worker

2.如何使用Celery?

   首先创建以下三个文件

from celery import Celery
import time

# 模拟用户App
my_task = Celery("task", broker="redis://127.0.0.1:6379", backend="redis://127.0.0.1:6379")


# 向应用中添加任务
@my_task.task
def my_func1(a, b):
    time.sleep(10)
    return f"my_func1 return{a}{b}"


@my_task.task
def my_func2():
    return "my_func2"


@my_task.task
def my_func3():
    return "my_func3"
c1
from c1 import my_func1

# 将任务交给Worker执行
res = my_func1.delay(2, 3)
print(res)
c2
from celery.result import AsyncResult
from c1 import my_task


# 拿出ID看任务执行情况
async_task = AsyncResult(id='bd5bd9b0-7510-406c-8340-eb3ddb74af5b', app=my_task)
# result = async_task.get()
# print(result)

# 判断异步任务是否执行成功
if async_task.successful():
    #获取异步任务的返回值
    result = async_task.get()
    print(result)
else:
    print("任务还未执行完成")
c3

   下一步启动Worker

   Linux  ----  celery worker -A s1 -l INFO

   Windows ----  - celery worker -A s1 -l INFO -P eventlet

猜你喜欢

转载自www.cnblogs.com/Treasuremy/p/10396119.html