问题描述
我的烧瓶项目中有这个配置:
在 requrement.txt 中:
flask_socketio
eventlet
在我的 app.py 中:
from flask_socketio import SocketIO
socketio = SocketIO(app,async_mode="eventlet")
@socketio.on('register')
async def register(data):
await my_asyncfunction(data['machine_id'])
和 my_asyncfunction:
async def my_asyncfunction(data):
....
这是我的错误:
/usr/local/lib/python3.7/threading.py:870:运行时警告:协程 'my_asyncfunction' 从未等待过 self._target(*self._args,**self._kwargs)RuntimeWarning: 启用 tracemalloc 以获取对象分配回溯
所以我尝试了选项 async_mode="eventlet"
但同样的错误:(
解决方法
Flask、Flask-SocketIO 和 eventlet 都不支持 asyncio,你不能以这种方式混合常规和异步函数。
如果您的应用程序使用 asyncio 函数,那么您必须放弃 Flask、Flask-SocketIO 和 eventlet,转而使用支持 asyncio 的 python-socketio。