在扭曲协议中定期运行函数

2023-12-28

我正在寻找一种方法来定期通过连接到 TCP 端口的所有客户端发送一些数据。我正在看扭曲的Python,我知道reactor.callLater。但是我如何使用它定期向所有连接的客户端发送一些数据?数据发送逻辑位于Protocol类中,由反应器根据需要实例化。我不知道如何将它从反应堆绑定到所有协议实例......


您可能希望在工厂中执行此操作以进行连接。每次建立和丢失连接时,工厂不会自动收到通知,因此您可以通过协议通知它。

下面是一个完整的示例,说明如何将twisted.internet.task.LoopingCall 与自定义的基本工厂和协议结合使用,每10 秒向每个连接宣布“10 秒已过去”。

from twisted.internet import reactor, protocol, task

class MyProtocol(protocol.Protocol):
    def connectionMade(self):
        self.factory.clientConnectionMade(self)
    def connectionLost(self, reason):
        self.factory.clientConnectionLost(self)

class MyFactory(protocol.Factory):
    protocol = MyProtocol
    def __init__(self):
        self.clients = []
        self.lc = task.LoopingCall(self.announce)
        self.lc.start(10)

    def announce(self):
        for client in self.clients:
            client.transport.write("10 seconds has passed\n")

    def clientConnectionMade(self, client):
        self.clients.append(client)

    def clientConnectionLost(self, client):
        self.clients.remove(client)

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

在扭曲协议中定期运行函数 的相关文章

  • Flask+Nginx+uWSGI:导入错误:没有名为站点的模块

    我安装为http www reinbach com uwsgi nginx flask virtualenv mac os x html http www reinbach com uwsgi nginx flask virtualenv
  • 从Python中的字符串中提取货币金额

    我正在制作一个程序 从字符串中获取货币并将其转换为其他货币 例如 如果字符串是 the car cost me 13 250 我需要得到 and 13250 我已经有了这个正则表达式 1 确实如此 但是该字符串很有可能有多个价格 并且全部使
  • 希伯来语中的稀疏句子标记化错误

    尝试对希伯来语使用稀疏句子标记 import spacy nlp spacy load he doc nlp text sents list doc sents I get Warning no model found for he Onl
  • 根据开始列和结束列扩展数据框(速度)

    我有一个pandas DataFrame含有start and end列 加上几个附加列 我想将此数据框扩展为一个时间序列 从start值并结束于end值 但复制我的其他专栏 到目前为止 我想出了以下内容 import pandas as
  • 可以用 Django 制作移动应用程序吗?

    我想知道我是否可以在我的网站上使用 Django 代码 并以某种方式在移动应用程序 Flutter 等框架中使用它 那么是否可以使用我现在拥有的 Django 后端并在移动应用程序中使用它 所以就像models views etc 是的 有
  • 与 while 循环一样,如何跳过 for 循环中的步骤?

    我尝试像 while 循环一样跳过 for 循环中的几个步骤 在 while 循环中 步骤根据特定条件进行调整 如下面的代码所示 i 0 while i lt 10 if i 3 i 5 else print i i i 1 result
  • Python 惰性迭代器

    我试图了解迭代器表达式如何以及何时被求值 以下似乎是一个懒惰的表达 g i for i in range 1000 if i 3 i 2 然而 这个在构造上失败了 g line strip for line in open xxx r if
  • 具有屏蔽无效值的 pcolormesh

    我试图将一维数组绘制为 pcolormesh 因此颜色沿 x 轴变化 但每个 x 的 y 轴保持不变 但我的数据有一些错误值 因此我使用屏蔽数组和自定义颜色图 其中屏蔽值设置为蓝色 import numpy as np import mat
  • 无法在 python 3.8 上将带有 webapp 的 python 部署到 azure

    我正在尝试使用部署一个测试项目Flask使用以下方法将框架迁移到 Azure 云中Azure CLI https learn microsoft com en us azure app service containers quicksta
  • 是否可以将 pd.Series 分配给无序 pd.DataFrame 中的列而不映射到索引(即不重新排序值)?

    在 Pandas 中创建或分配新列时 我发现了一些意外的行为 当我对 pd DataFrame 进行过滤或排序 从而混合索引 然后从 pd Series 创建新列时 Pandas 会重新排序该系列以映射到 DataFrame 索引 例如 d
  • 对数据帧的每 2 小时数据进行 Groupby

    我有一个数据框 Time T201FN1ST2010 T201FN1VT2010 1791 2017 12 26 00 00 00 854 69 0 87 1792 2017 12 26 00 20 00 855 76 0 87 1793
  • 处理大文件的最快方法?

    我有多个 3 GB 制表符分隔文件 每个文件中有 2000 万行 所有行都必须独立处理 任何两行之间没有关系 我的问题是 什么会更快 逐行阅读 with open as infile for line in infile 将文件分块读入内存
  • 如何使用 matplotlib 为圆柱体的每个单独面添加颜色

    我正在尝试为圆柱体的每个面着色 但是我不确定如何进行 我尝试了以下方法 for i in range 10 col append for i in range 10 for j in range 20 col i append plt cm
  • 在 virtualenvwrapper 中激活环境

    我安装了virtualenv and virtualenvwrapper用这个命令我创建了一个环境 mkvirtualenv cv 它有效 创建后我就处于新环境中 现在我重新启动了我的电脑 我想activate又是那个环境 但是怎么样 我使
  • 更改 Python Cmd 模块处理自动完成的方式

    我有一个 Cmd 控制台 设置为自动完成 Magic the Gathering 收藏管理系统的卡牌名称 它使用文本参数在数据库中查询卡片 并使用结果自动完成 建议卡片 然而 这些卡片名称有多个单词 Cmd 会从last到行尾的空间 例如
  • 如何在单元测试中使用 JSON 发送请求

    我的 Flask 应用程序中有在请求中使用 JSON 的代码 我可以像这样获取 JSON 对象 Request request get json 这一直工作得很好 但是我正在尝试使用 Python 的 unittest 模块创建单元测试 但
  • 如何循环遍历字典列表并打印特定键的值?

    我是 Python 新手 有一个问题 我知道这是一个非常简单的问题 运行Python 3 4 我有一个需要迭代并提取特定信息的列表 以下是列表 称为部分 的示例 已截断 数千个项目 state DEAD id phwl type name
  • 长/宽数据到宽/长

    我有一个数据框 如下所示 import pandas as pd d decil 1 decil 1 decil 2 decil 2 decil 3 decil 3 decil kommune AA BB AA BB AA BB 2010
  • 使用 urllib 编码时保持 url 参数有序

    我正在尝试用 python 模拟 get 请求 我有一个参数字典 并使用 urllib urlencode 对它们进行 urlencode 我注意到虽然字典的形式是 k1 v1 k2 v2 k3 v3 urlencoding 后参数的顺序切
  • 缓存 Flask-登录 user_loader

    我有这个 login manager user loader def load user id None return User query get id 在我引入 Flask Principal 之前它运行得很好 identity loa

随机推荐

  • 如何通过验证保留 JSF 视图参数

    我将 JSF 2 0 CDI 和 PrimeFaces 2 2 1 用于许多 CRUD 表单 这些表单允许用户通过单击数据表中的链接来查看或更新现有实体的属性 其中实体的标识符被传递到CRUD 形式作为视图参数 我在 PrimeFaces
  • 内存是否加密?

    我想将一些数据存储在变量中 并且我知道变量存储在内存中 内存中的数据是否被加密 另外 软件是否可以读取存储在内存中的变量名称并能够从中实际提取数据 内存是not在我所知道的任何平台上进行加密 无论如何 它的价值有限 因为处理器通常必须对明文
  • R 中 MuMIn 包的标准化

    我使用 R 中的 MuMIn 包来选择模型并计算输入变量 rain brk onset wid 的效应大小 为了使变量之间的效应大小具有可比性 我使用标准化函数对它们进行了标准化arm包裹 这是我正在遵循的代码 供参考 请参阅本文附录 ht
  • StreamReader 和二进制数据

    我有这个包含不同字段的文本文件 某些字段可能包含二进制数据 我需要获取文件中的所有数据 但现在使用 StreamReader 时 它不会读取二进制数据块以及之后的数据 解决这个问题的最佳解决方案是什么 Example field1 fiel
  • 使用 Java 8 的复杂自定义收集器

    我有一个对象流 我想通过以下方式收集它们 假设我们正在处理论坛posts class Post private Date time private Data data 我想创建一个列表 其中包含哪些组posts通过一段时间 如果没有post
  • 使用 Java 通过 Rest API 在 Confluence 中创建页面

    有谁有关于如何使用 Confluence 的 RESTful API 在 Confluence 中创建页面 wiki 条目的示例吗 我正在尝试用 Java 编写一些可以做到这一点的东西 先感谢您 谢谢 我已经在线检查了文档 但找不到任何示例
  • 安装同一 iPhone 项目的不同版本?

    当我制作游戏原型时 我经常需要回去与旧版本进行比较 以更好地了解我是否走在正确的轨道上 但每次我需要检查特定版本时都必须检查旧版本并重新导出 这是一个漫长的过程 如果我可以简单地启动不同的版本 那就会更顺利 如何在设备上安装同一项目的多个版
  • 如果在沙盒中,Stripe.js 需要“allow-same-origin”

    我正在尝试打开stripe js的支付网关 结账页面 我这样做了 async function LoadPaymentController var stripe Stripe pk test 51JBxkrB1SsiUQAfnzEWMqNg
  • 从 url 中删除 php 扩展名

    我有网址example com lt php example并希望删除 phpexample com lt example我尝试使用 htaccess 但我认为这是不可能的 RewriteEngine On RewriteCond REQU
  • 是否可以使 SwiftUI ListMenu 具有不同的行为?

    是否可以使用 swiftUI 创建一个列表菜单 其中列表项具有不同的行为 并使用 foreach 添加到视图中 列表项将是模型 例如 第一个将打开 个人资料 视图 第二个将打开另一个不同的视图 第三个将只是简单地注销 并用 ForEach
  • 使用正则表达式提取 PHP 代码

    我想用正则表达式提取本节的整个 PHP 代码 h1 Extract the PHP Code h1 Another stumbling block gt echo that works gt p Some HTML text p 不幸的是
  • Python 最大函数

    当列表中的项目不是同一类型时 max 函数如何工作 例如以下代码返回 1 3 max 1 52 53 1 3 gt 1 3 在Python2中 不同类型对象的默认比较是使用id它们的类型 通过将对象指针转换为整数获得 这里是来源的链接 ht
  • Java 执行器:当任务完成时,如何在不阻塞的情况下收到通知?

    假设我有一个充满任务的队列 我需要将其提交给执行器服务 我希望一次处理一个 我能想到的最简单的方法是 从队列中取出一个任务 提交给执行人 对返回的 Future 调用 get 并阻塞 直到有结果可用 从队列中取出另一个任务 但是 我试图完全
  • Android - 如何仅通过单击应用程序图标来执行项目的主要功能?

    我正在制作一个应用程序 并且需要仅通过单击其图标来执行其主要功能 换句话说 没有布局 没有小部件 只是它的工作 一旦用户单击该图标 它就应该执行其主要功能 我想到的一种方法是将所有代码放入onCreate功能 或者如果还有其他方法请分享给我
  • 应用程序被终止时的 Android 地理围栏

    我的主要要求是让服务拥有自己的流程并触发自己的地理围栏事件 我希望用户在进入地理围栏时收到通知中心的通知 即使应用程序被终止也是如此 我阅读了有关服务的内容 这对我来说似乎很清楚 Android 文档很丰富 因此我设法了解如何使用自己的进程
  • ggplot2/R 输出 pdf 太大

    我正在 MacBook Pro 中的 ggplot2 中生成 32x32 图块 每个图块小于四分之一英寸 x 四分之一英寸大小 热图 这是相对简单的东西 然而 它的 pdf 输出很大 大约 7MB 当我将其加载到 pdflatex 中时 加
  • 创建 Vuex 存储后,如何手动将 getter/mutations 添加到 Vuex 存储中?

    我正在尝试在我的 Vuejs 组件之一的 created 生命周期挂钩中添加新变量 getter 和突变 变量工作正常 但对于 getters mutations 来说 似乎并不像向 vuex 存储对象添加新函数那么容易 我试图解决的问题是
  • 将样式添加到 textarea 的特定行

    我有动态的 html textarea 它的内容逐行更改 我想为更新或修改的行内容添加一些样式 是否有任何窗口选择 例如属性 可以做到这一点 我想要的是让用户感觉到改变已经发生happen 或者还有其他方法可以实现吗 没有简单的方法可以仅通
  • Android 上的 CDMA PDU 解析

    我编写了一个程序来解码 CDMA 3GPP2 点对点 SMS 消息 我在互联网上找到的几个 CDMA PDU 十六进制字符串上对其进行了测试 效果非常好 然而 当我尝试在 Android 平台上的所有传入短信上实现它时 它总是失败 我查看了
  • 在扭曲协议中定期运行函数

    我正在寻找一种方法来定期通过连接到 TCP 端口的所有客户端发送一些数据 我正在看扭曲的Python 我知道reactor callLater 但是我如何使用它定期向所有连接的客户端发送一些数据 数据发送逻辑位于Protocol类中 由反应