首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python web 异步非堵塞任务的实现

python web 异步非堵塞任务的实现

1.使用celery异步调度任务框架,redis作为celery的broker和result backend2.实现web接口的非堵塞响应 应用场景比如用户注册登录发邮件/用户提交其他请求,后端返回用户taskid3.实现查询单个异步任务(taskid)执行状态/结果4.实现查询全部异步任务接口

依赖环境

python版本3.6

依赖包

celery==4.2.0redis==2.10.6flask==0.11.1如果遇到celery服务不正常 一般是python环境和celery版本不兼容所致

celery服务(celery_test项目结构)

celery.py

tasks.py(堵塞任务)

启动celery服务

cd celerytest(tasks.py的父目录)celery -B -A celerytest worker --loglevel=info

出现以下内容 证明服务已启动

web api 服务

api.py

Helper.py

启动web服务

浏览器访问堵塞接口

http://0.0.0.0:7000/api/v1/sync?n=30000可以看到响应并没有等待20s 返回的task_id=9a0eb2c1-0830-41e9-bebd-756273b44979,注意观察celery服务已经接收到异步任务

查询单个异步任务(task_id)执行状态/结果

http://0.0.0.0:7000/api/v1/task?task_id=9a0eb2c1-0830-41e9-bebd-756273b44979

查询全部异步任务接口

http://0.0.0.0:7000/api/v1/allTask

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190123A0KHFG00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券