参考博客:
https://www.cnblogs.com/wupeiqi/articles/8796552.html
什么情况下使用celery:
一个请求的处理时间特别长
先进行安装:
pip3 install celerypip3 install eventlet
-
user:用户程序,用于告知celery去执行一个任务。
-
broker: 存放任务(依赖RabbitMQ或Redis,进行存储)
-
worker:执行任务
/
依赖redis做消息队列(存放任务和结果)
//
//
worker 需要先启动起来,等待着任务的到来, 执行以下命令 celery worker -A s1 -l info #在cmd里执行,s1是py文件名,-l是打印日志,info是日志的分类,这是在linux跟mac的命令 可以在cmd里面多次运行该命令, 应对大量的请求, 在window下,需要安装eventlet模块, celery worker -A s1 -l info -P eventlet #执行此命令,worker就启动起来了,取到任务,然后去执行
执行以下命令,
celery worker -A s1 -l info -P eventlet #建议在linux使用celery
cmd显示如图所示,
//
s1.py文件
import time from celery import Celery #假如redis有密码的话,[email protected]:6379 xxx就是密码 app = Celery(‘tasks‘, broker=‘redis://127.0.0.1:6379‘, backend=‘redis://127.0.0.1:6379‘) @app.task def xxxxxx(x, y): time.sleep(10) return x + y
s2.py文件
import s1 result=s1.xxxxxx.delay(8,67) #将任务及参数,交给redis队列,worker拿到去执行 print(result) #执行这个文件,就是相当于执行任务 #返回一个随机字符串,实际上是对象,1f316713-d792-4e87-9b2a-06db5005071e
执行s2.py文件之后
进redis查看结果,
/
celery模拟12306买票的例子
//
原文地址:https://www.cnblogs.com/dlh-lmsh/p/10216846.html
时间: 2024-11-08 04:22:25