使用“asyncio”在单独的线程中运行的高速公路中从外部发送消息

2023-11-29

我想从 MyServerProtocol 类外部调用 sendMessage 方法并向服务器发送消息。 答案是very如同this 但我需要使用 asyncio 而不是 twins.

有人可以建议我一个解决方案吗?一个例子源自this也将不胜感激 谢谢。


The call_soon_threadsafe事件循环的功能就是为了这个目的。

from autobahn.asyncio.websocket import WebSocketServerProtocol, \
    WebSocketServerFactory


class MyServerProtocol(WebSocketServerProtocol):

    loop = None

    def onConnect(self, request):
        print("Client connecting: {0}".format(request.peer))

    def onOpen(self):
        print("WebSocket connection open.")

    def onMessage(self, payload, isBinary):
        if isBinary:
            print("Binary message received: {0} bytes".format(len(payload)))
        else:
            print("Text message received: {0}".format(payload.decode('utf8')))

    def onClose(self, wasClean, code, reason):
        print("WebSocket connection closed: {0}".format(reason))

    @classmethod
    def broadcast_message(cls, data):
        payload = json.dumps(data, ensure_ascii = False).encode('utf8')
        for c in set(cls.connections):
            self.loop.call_soon_threadsafe(cls.sendMessage, c, payload)


factory = WebSocketServerFactory(u"ws://127.0.0.1:9000")
factory.protocol = MyServerProtocol

loop = asyncio.get_event_loop()
MyServerProtocol.loop = loop
coro = loop.create_server(factory, '0.0.0.0', 9000)
server = loop.run_until_complete(coro)

    try:
        loop.run_forever()
    except KeyboardInterrupt:
        pass
    finally:
        server.close()
loop.close()

然后从另一个线程简单地调用

MyServerProtocol.broadcast_message(payload)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用“asyncio”在单独的线程中运行的高速公路中从外部发送消息 的相关文章

  • 元组有什么用?

    我现在正在学习 Python 课程 我们刚刚介绍了元组作为数据类型之一 我阅读了它的维基百科页面 但是 我无法弄清楚这种数据类型在实践中会有什么用处 我可以提供一些需要一组不可变数字的示例吗 也许是在 Python 中 这与列表有何不同 每
  • 如何用python脚本控制TP LINK路由器

    我想知道是否有一个工具可以让我连接到路由器并关闭它 然后从 python 脚本重新启动它 我知道如果我写 import os os system ssh l root 192 168 2 1 我可以通过 python 连接到我的路由器 但是
  • 将html数据解析成python列表进行操作

    我正在尝试读取 html 网站并提取其数据 例如 我想查看公司过去 5 年的 EPS 每股收益 基本上 我可以读入它 并且可以使用 BeautifulSoup 或 html2text 创建一个巨大的文本块 然后我想搜索该文件 我一直在使用
  • 需要在python中找到print或printf的源代码[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在做一些我不能完全谈论的事情 我
  • Python zmq SUB 套接字未接收 MQL5 Zmq PUB 套接字

    我正在尝试在 MQL5 中设置一个 PUB 套接字 并在 Python 中设置一个 SUB 套接字来接收消息 我在 MQL5 中有这个 include
  • 独立滚动矩阵的行

    我有一个矩阵 准确地说 是 2d numpy ndarray A np array 4 0 0 1 2 3 0 0 5 我想滚动每一行A根据另一个数组中的滚动值独立地 r np array 2 0 1 也就是说 我想这样做 print np
  • 立体太阳图 matplotlib 极坐标图 python

    我正在尝试创建一个与以下类似的简单的立体太阳路径图 http wiki naturalfrequent com wiki Sun Path Diagram http wiki naturalfrequency com wiki Sun Pa
  • 在Python中连接反斜杠

    我是 python 新手 所以如果这听起来很简单 请原谅我 我想加入一些变量来生成一条路径 像这样 AAAABBBBCCCC 2 2014 04 2014 04 01 csv Id TypeOfMachine year month year
  • datetime.datetime.now() 返回旧值

    我正在通过匹配日期查找 python 中的数据存储条目 我想要的是每天选择 今天 的条目 但由于某种原因 当我将代码上传到 gae 服务器时 它只能工作一天 第二天它仍然返回相同的值 例如当我上传代码并在 07 01 2014 执行它时 它
  • 为什么 PyYAML 花费这么多时间来解析 YAML 文件?

    我正在解析一个大约 6500 行的 YAML 文件 格式如下 foo1 bar1 blah name john age 123 metadata whatever1 whatever whatever2 whatever stuff thi
  • Python beautifulsoup 仅限 1 级文本

    我看过其他 beautifulsoup 得到相同级别类型的问题 看来我的有点不同 这是网站 我正试图拿到右边那张桌子 请注意表的第一行如何展开为该数据的详细细分 我不想要那个数据 我只想要最顶层的数据 您还可以看到其他行也可以展开 但在本例
  • Meteor.setTimeout 和 Meteor.methods 之间的并发

    在我的 Meteor 应用程序中实现回合制多人游戏服务器 客户端通过发布 订阅接收游戏状态 并且可以调用 Meteor 方法sendTurn将回合数据发送到服务器 他们无法直接更新游戏状态集合 var endRound function g
  • 如何通过 TLS 1.2 运行 django runserver

    我正在本地 Mac OS X 机器上测试 Stripe 订单 我正在实现这段代码 stripe api key settings STRIPE SECRET order stripe Order create currency usd em
  • Numpy - 根据表示一维的坐标向量的条件替换数组中的值

    我有一个data多维数组 最后一个是距离 另一方面 我有距离向量r 例如 Data np ones 20 30 100 r np linspace 10 50 100 最后 我还有一个临界距离值列表 称为r0 使得 r0 shape Dat
  • 如何使用原始 SQL 查询实现搜索功能

    我正在创建一个由 CS50 的网络系列指导的应用程序 这要求我仅使用原始 SQL 查询而不是 ORM 我正在尝试创建一个搜索功能 用户可以在其中查找存储在数据库中的书籍列表 我希望他们能够查询 书籍 表中的 ISBN 标题 作者列 目前 它
  • Pandas 将多行列数据帧转换为单行多列数据帧

    我的数据框如下 code df Car measurements Before After amb temp 30 268212 26 627491 engine temp 41 812730 39 254255 engine eff 15
  • 如何解决 PDFBox 没有 unicode 映射错误?

    我有一个现有的 PDF 文件 我想使用 python 脚本将其转换为 Excel 文件 目前正在使用PDFBox 但是存在多个类似以下错误 org apache pdfbox pdmodel font PDType0Font toUnico
  • 将 Python 中的日期与日期时间进行比较

    所以我有一个日期列表 datetime date 2013 7 9 datetime date 2013 7 12 datetime date 2013 7 15 datetime date 2013 7 18 datetime date
  • 模拟pytest中的异常终止

    我的多线程应用程序遇到了一个错误 主线程的任何异常终止 例如 未捕获的异常或某些信号 都会导致其他线程之一死锁 并阻止进程干净退出 我解决了这个问题 但我想添加一个测试来防止回归 但是 我不知道如何在 pytest 中模拟异常终止 如果我只
  • cv2.VideoWriter:请求一个元组作为 Size 参数,然后拒绝它

    我正在使用 OpenCV 4 0 和 Python 3 7 创建延时视频 构造 VideoWriter 对象时 文档表示 Size 参数应该是一个元组 当我给它一个元组时 它拒绝它 当我尝试用其他东西替换它时 它不会接受它 因为它说参数不是

随机推荐

  • 如何在传单地图上突出显示所选行?

    我想画一张地图 上面画了几条路线 我想要一个带有数字 1 n 的保管箱 当选择保管箱中的某个项目时 相应的路线会在地图上突出显示 我已经开始使用 传单 如何突出显示一条线 我使用了 重量 但它更多的是一条线的边界 我希望看到这条线变得更粗
  • 如何在新选项卡中打开页面但不为其提供焦点?(JSF 2.0)

    我想要的是在新选项卡中打开页面 但不要将焦点放在新打开的选项卡上 因此 如果我点击几次 我可以打开几个选项卡 就像我右键单击一个链接并说在新选项卡中打开一样 我只在 Chrome 和 Firefox 浏览器中尝试过 你知道这可能吗 目前 我
  • 从delphi2006调用.net dll来显示wpf表单

    我正在使用 Robert Gieseckes 出色的非托管导出来调用 Delphi2006 中的 c Dll 如果我使用带有输入和输出的简单过程和函数 一切都会很好 但现在我想通过调用 OpenMyWindow 显示一个 Wpf Windo
  • Python 中列表内的压缩列表

    我有一个清单清单 big list a1 b1 c1 a2 b2 c3 a3 b3 c3 如何压缩此列表中的列表 我想做的是zip list1 list2 list3 但是动态地执行此操作 我相信这与args and kwargs我不熟悉
  • 如何从 Firestore 地图字段添加/删除?

    如文档中所列 有一种方法可以在此处使用点表示法更新地图字段 https firebase google com docs firestore manage data add data update fields in nested obje
  • 使用 JavaScript 获取 URL 的一部分

    我目前正在www google com folder folder archive php并使用window location来确定这一点 我其实想瞄准 archive php 没有别的 有什么东西可以实现这一点吗 window locat
  • 将年龄限制设置为 18 岁 - Bootstrap Datepicker

    我正在使用 Bootstrap Datepicker 我想将年龄限制设置为 18 岁 应禁用从当前日期算起年龄小于 18 岁的日期 这是我的小提琴 http jsfiddle net kGGCZ 17 JS function datepic
  • 我的MySQL触发器不起作用,语法简单,不复杂

    我不知道为什么我的触发器不起作用 当我手动使用它时查询可以工作 但是当我想通过触发器更新时它不起作用 有人可以帮我知道为什么吗 这是我的触发器 CREATE TRIGGER upd PTS AFTER UPDATE ON pos table
  • 为什么色调旋转 +180deg 和 -180deg 不会产生原始颜色?

    通过阅读 HSL HSV 颜色理论 我得到的印象是 色调分量是一个循环属性 每 360 度重复一次 并且可以独立于饱和度和亮度 值进行更改 如果我错了 请纠正我 但这些陈述在逻辑上遵循前面的定义 将色调旋转 360 度会产生相同的颜色 将色
  • Kafka Binder 的健康状况始终未知

    当我尝试激活卡夫卡活页夹的运行状况指示器时 如中所述Spring Cloud Stream 参考文档 健康端点返回 binders status UNKNOWN kafka status UNKNOWN 我的配置包含文档 managemen
  • 如何更改 Datagrid 滚动条的大小?

    我有一个在运行时显示数据的数据网格 由于它有大量数据 它本身带有滚动条 但尺寸较小 谁能告诉如何改变滚动条的大小并使其更大
  • SSH2更改用户密码

    我一直在使用 SSH 现在我需要通过 PHP 的 ssh2 更改用户的密码 这是我的代码 stream ssh2 exec ssh passwd test1234 stream set blocking stream true data w
  • iOS-Swift、Stripe 创建临时密钥返回 Google 登录页面

    您好 我正在尝试使用 Firebase 云功能获取临时密钥 下面是我的 Swift 文件和节点的文件 swift class VIARestClient NSObject STPEphemeralKeyProvider static let
  • Dockerfile 命名:.dockerfile 与 Dockerfile

    我是 Dockerfile 命名法的新手 并且注意到我的组织中存储库中存在一些不同的 dockerfile 示例 包括以下类型 Dockerfile Dockerfile build dockerfile 我可以在哪里找到不同用例和每个用途
  • 如何在 scikit-learn 中使用用户定义的最近邻度量?

    我正在使用 scikit learn 0 18 dev0 我知道以前也有人问过同样的问题here 我尝试了那里提供的答案 但出现以下错误 gt gt gt def mydist x y return np sum x y 2 gt gt g
  • jQuery Ajax请求内容下载为空

    我有一个以 PDF 格式返回输出的 PHP 文件 如果我直接访问该文件 则工作正常 我想通过 AJAX 检索 PDF 文件 在原生 Javascript 中 它工作得很好 var req new XMLHttpRequest req ope
  • 如何使用 SVG 翻译将 d3.js 投影居中到给定的纬度和经度值?

    我正在使用 d3 渲染 GeoJSON 世界地图的墨卡托投影 我希望能够使用 d3 进行缩放 并在用户逐步执行我的应用程序时将地图转换为已知的纬度和经度值 projection center https github com mbostoc
  • 将文件中的部分 url 替换为 sed

    我有一个充满网址的文件 如下所示 https testing this string for now 我需要专门使用 sed 将它们全部替换为 https testing this now 并在最后保存更新内容的文件 所以实际上删除 无论
  • 如何通过 bat 文件关闭、重新启动或注销 Windows?

    我一直在使用远程桌面连接进入工作站 但在这种环境下 我无法使用 开始 菜单中的电源选项 我需要一种替代方法来关闭或重新启动 如何通过命令行控制计算机的电源状态 最常见的使用方法shutdown命令是 shutdown s 关闭 shutdo
  • 使用“asyncio”在单独的线程中运行的高速公路中从外部发送消息

    我想从 MyServerProtocol 类外部调用 sendMessage 方法并向服务器发送消息 答案是very如同this 但我需要使用 asyncio 而不是 twins 有人可以建议我一个解决方案吗 一个例子源自this也将不胜感