微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

flask_socket.io _ 运行异步任务的问题

如何解决flask_socket.io _ 运行异步任务的问题

我的烧瓶项目中有这个配置:

在 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。