栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

从Flask路由进行Python异步调用

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从Flask路由进行Python异步调用

你可以将一些异步功能整合到Flask应用中,而不必完全将其转换为异步。

import asynciofrom flask import Flaskasync def abar(a):    print(a)loop = asyncio.get_event_loop()app = Flask(__name__)@app.route("/")def notify():    loop.run_until_complete(abar("abar"))    return "OK"if __name__ == "__main__":    app.run(debug=False, use_reloader=False)

这将阻止Flask响应,直到异步函数返回为止,但是它仍然允许你做一些聪明的事情。我已经使用此模式使用aiohttp并行执行许多外部请求,然后在完成它们之后,我回到传统的flask中进行数据处理和模板渲染。

import aiohttpimport asyncioimport async_timeoutfrom flask import Flaskloop = asyncio.get_event_loop()app = Flask(__name__)async def fetch(url):    async with aiohttp.ClientSession() as session, async_timeout.timeout(10):        async with session.get(url) as response: return await response.text()def fight(responses):    return "Why can't we all just get along?"@app.route("/")def index():    # perform multiple async requests concurrently    responses = loop.run_until_complete(asyncio.gather(        fetch("https://google.com/"),        fetch("https://bing.com/"),        fetch("https://duckduckgo.com"),        fetch("http://www.dogpile.com"),    ))    # do something with the results    return fight(responses)if __name__ == "__main__":    app.run(debug=False, use_reloader=False)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/385158.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号