python - 如何从由不同线程调用的回调中调用异步函数?
问题描述
我面临的问题是 ROS 框架使用普通回调,而 aiohttp+socket.io 使用 asyncio。我希望从 ROS 回调中调用异步函数。例子:
#!/usr/bin/env python3
import asyncio
import socketio
import rospy
from aiohttp import web
from rosgraph_msgs.msg import Log
sio = socketio.AsyncServer()
app = web.Application()
sio.attach(app)
def on_rosout(msg):
sio.emit("message", msg.msg) # THIS DOES NOT WORK
@sio.on('connect', namespace='/')
def connect(sid, environ):
print("connect", sid)
@sio.on('disconnect', namespace='/')
def disconnect(sid):
print("disconnect", sid)
app.router.add_static('/', 'html', show_index = True)
if __name__ == "__main__":
rospy.init_node("foo_node")
rospy.Subscriber("/rosout_agg", Log, on_rosout)
web.run_app(app)
解决方案
推荐阅读
- php-curl - Coinimp http api 撤回
- c++ - 检查多图C++中是否已经存在值
- javascript - window.XXX = require(YYY) VS const {XXX} = require(YYY):使用哪个?
- google-sheets - Google表格中INDIRECT内的COUNTIF
- c# - .net 核心中的逆变性如何与 Func 委托一起使用
- python - 将 N 个矩阵相乘 - 符号计算
- hyperledger-fabric - 在 Hyperledger Fabric 中的 Channel MSP 中识别客户端
- robotframework - 如何在 Windows 中使用 Robot Framework 显式打开 excel 文件
- python - 我可以让 Anaconda 导航器在 pypi 上查看包吗?
- perl - 如何创建仅在一个请求期间全局的“全局”范围变量?