import aiohttp
import asyncio
import async_timeout
from flask import Flask
loop = asyncio.get_event_loop()
app = Flask(__name__)
async def fetch(url):
async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(ssl=False)) as session, async_timeout.timeout(100):
async with session.get(url) as response:
return await response.text()
def fight(responses):
return "done"
@app.route("/")
def index():
# perform multiple async requests concurrently
try:
loop = asyncio.get_event_loop()
except RuntimeError as er:
print(er.args[0], 'create a new EventLoop')
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
responses = loop.run_until_complete(asyncio.gather(
fetch("https://baidu.com")
))
# do something with the results
return fight(responses)
if __name__ == "__main__":
app.run(debug=False, use_reloader=False)
部分参考:https://yanbin.blog/how-flask-work-with-asyncio/