美文网首页
Flask实现异步非阻塞接口

Flask实现异步非阻塞接口

作者: 垃圾桶边的狗 | 来源:发表于2021-02-02 20:15 被阅读0次

背景:
工作中有一需求,需要请求外部JiRa(类似数据库吧),将请求数据进行分析,从请求到获取数据需要20s,由于这一个接口在等待,导致访问其他接口也跟着等待。为此,必须将该接口转换成异步非阻塞接口。
由于该接口是GET请求,使用celery感觉不太合适,毕竟不是后台post、update,delete等操作,用户着急看返回的数据呢。但是Jiwa不能动啊,只因为这一接口,影响到整个服务,必须得找到解决办法。

1.使用Python内置库asyncio


import asyncio
import nest_asyncio
from flask import Flask
nest_asyncio.apply()
async def get_jira(url):
    data = requests.get(url).json()
return data

loop = asyncio.get_event_loop()
app = Flask(__name__)

@app.route("/jira/")
def view():
    url = 'www.asdasd.com'
    res = loop.run_until_complete(get_jira(url))
    return res # 此res就是函数get_jira return 的data

if __name__ == "__main__":
    # app.run(debug=False, use_reloader=False)
    最好使用flask_script  Manager 用命令行启动程序 
    ## --threaded必须加上不然不会异步 
    # python manages.py runserver -r -d -p 5000 --threaded

1.使用Python内置库asyncio

from flask import Flask, request, g
 
# gevent
from gevent import monkey
from gevent.pywsgi import WSGIServer
monkey.patch_all()
# gevent end
 
import time
 
app = Flask(__name__)
app.config.update(DEBUG=True)
 
@app.route('/asyn/', methods=['GET'])
def test_asyn_one():
  print("asyn has a request!")
  time.sleep(10)
  return 'hello asyn'
 
 
@app.route('/test/', methods=['GET'])
def test():
  return 'hello test'
 
 
if __name__ == "__main__":
  # app.run()
  http_server = WSGIServer(('', 5000), app)
  http_server.serve_forever()

相关文章

  • Flask实现异步非阻塞接口

    背景:工作中有一需求,需要请求外部JiRa(类似数据库吧),将请求数据进行分析,从请求到获取数据需要20s,由于这...

  • [Flask] 异步非阻塞IO实现

    Flask默认是不支持非阻塞IO的,表现为: 当 请求1未完成之前,请求2是需要等待处理状态,效率非常低。 在fl...

  • Java IO快速入门

    网络IO实现方式分为BIO(阻塞IO)、线程池伪异步IO、NIO(非阻塞IO)、AIO(异步非阻塞IO); 异步、...

  • Java IO

    Before IO 分为:同步、异步阻塞、非阻塞 同步和异步是目的,阻塞和非阻塞是实现方式。 一个IO操作其实分成...

  • 谈论:同步异步阻塞非阻塞.md

    同步/异步:关注的方式(是否主动) 阻塞/非阻塞: 同步阻塞BIO: 同步非阻塞NIO: 异步非阻塞: 异步阻塞:

  • 异步编程

    同步、异步、阻塞、非阻塞 Future JDK 5引入了Future模式。重点实现的是并发处理,异步阻塞 Futu...

  • 【转】Flask实现异步非阻塞请求功能

    本文来源:http://blog.csdn.net/yannanxiu/article/details/52915...

  • 阻塞非阻塞 同步异步 IO模型及其应用 NIO实现原理

    1.同步异步概念 2.阻塞非阻塞概念 3.常见I/O模型:同步阻塞IO,同步非阻塞IO,异步阻塞IO,异步非阻塞I...

  • UNIX 的5种IO模型介绍

    IO模型同步、异步、阻塞、非阻塞socket阻塞与非阻塞,同步与异步 同步和异步 同步/异步主要针对C端-同步就像...

  • 并发编程基础知识三 异步,非阻塞和 IO 复用

    参考通俗讲解 异步,非阻塞和 IO 复用 一、异步,非阻塞 为了更加形象的说明同步异步、阻塞非阻塞,我们以小明去买...

网友评论

      本文标题:Flask实现异步非阻塞接口

      本文链接:https://www.haomeiwen.com/subject/jaxutltx.html