flask 写异步接口
时间: 2023-10-25 19:19:58 浏览: 112
在 Flask 中,可以使用 asyncio 和 aiohttp 库来实现异步接口。下面是一个简单的示例:
```python
import asyncio
from aiohttp import web
from flask import Flask
app = Flask(__name__)
async def async_handler(request):
# 异步处理逻辑
return web.Response(text='Hello, async!')
@app.route('/async', methods=['GET'])
def async_route():
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
response = loop.run_until_complete(async_handler(request))
return response
if __name__ == '__main__':
app.run(port=5000)
```
在这个示例中,我们使用 aiohttp 库来实现异步处理逻辑,并使用 asyncio 库来运行事件循环。在 Flask 应用中,我们使用 `asyncio.new_event_loop()` 来创建一个新的事件循环,然后使用 `asyncio.set_event_loop()` 来设置当前线程的事件循环,最后使用 `loop.run_until_complete()` 来运行协程并等待其完成。
值得注意的是,在 Flask 中使用异步接口时,必须确保 Flask 应用的运行方式是多线程或多进程的,否则异步接口将会阻塞整个应用。可以通过在 `app.run()` 函数中设置 `threaded=True` 或 `processes=n` 来指定 Flask 应用的运行方式。
阅读全文