问题标签 [twisted.internet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
252 浏览

python - 在 reactor.run() 之后,Deluge/Twisted 脚本挂起

这是一个来自dev.deluge-torrent.org的简单示例脚本,用于与 Deluge API 交互。

在 reactor.run() 之后没有任何反应,而且我没有收到“连接成功”消息,它只是永远挂起。

我在我的 Ubuntu 机器上运行它,它运行良好,但我无法让它在我真正想使用它的 Windows 机器上运行。

我不知道如何调试这个问题。我对 Twisted 很陌生,据我了解,这是一个巨大的图书馆。

0 投票
1 回答
467 浏览

multithreading - 从线程运行 Twisted reactor

当我在同步 python 程序中从线程运行反应器时,永远不会调用扭曲的代码。

为了解决这个问题,我不得不睡觉。

最好的方法是什么,而不是调用睡眠?

0 投票
1 回答
1576 浏览

python - 使用 Twisted Python 在特定接口上接收广播 UDP

我正在使用在不同子网上有多个接口的 Ubuntu 14.04 服务器。我正在尝试编写一个 twisted(13.2.0) 应用程序,它只在一个接口上监听广播,而忽略其他接口。

我可以使用此代码接收广播。

我正在使用 socat 从 192.168.1.x 子网上的另一台机器发送测试 UDP 广播。

但是,这将在服务器上的任何接口上接收广播。我认为它会在reactor.listenUDP() 中指定接口,就像我在注释调用中所做的那样。

如果我使用包含接口的 reactor.listenUDP() 调用,我将不再接收广播。我仍然收到用 socat 发送的单播 UDP。

我可以在指定接口时看到套接字绑定到接口。

但是广播正在被丢弃。我通过 tcpdump 确认广播正在到达服务器。

在 twisted python 中设置 UDP 侦听器接口的正确方法是什么?

0 投票
1 回答
36 浏览

python - 如何使用 Twisted IRCClient 获取用户的主机掩码

我正在尝试获取用户的主机掩码,以允许在我的 IRCClient 机器人中进行一些身份验证。但是,它似乎已从所有回复中删除?我试过“whois”,但它只给了我用户名和用户所在的频道,而不是主机掩码。

关于如何做到这一点的任何提示?

0 投票
2 回答
903 浏览

python-2.7 - 有什么方法可以更改scrapy中的日志消息格式?

我想修改scrapy日志消息以在其开头包含用户ID。例如,而不是这个

有没有可能让它看起来像

另外,有没有办法只记录用户消息;即,只记录我想记录的我将从代码中提供的消息?

任何帮助将不胜感激。提前致谢!

0 投票
1 回答
308 浏览

python - 启动扭曲反应器时的 CPU 使用率

我正在监视包含以下代码的 python 脚本的 CPU 使用情况

我正在使用 ps 命令获取 CPU 使用率(百分比)

条件是它不应该使用超过 5% 的 CPU。但是一旦我执行脚本,CPU 使用率就会达到 16% 到 20%。之后,在 3 或 4 秒内下降到 1% 或 2%。我的问题是,为什么一开始 CPU 使用率会增加到 16% 到 20%?我观察到当 reactor 开始运行时,CPU 使用率会增加一段时间。之后,就我而言,它几乎不使用 CPU(0.3% 到 0.4%)。

0 投票
1 回答
686 浏览

python - 使用管道扭曲运行本地 shell 命令

在扭曲中,getProcessOutput 方法可以通过使用getProcessOutupt('ps', 'aux')获取 'ps' shell 命令输出并返回延迟。

我的问题是如何在 getProcessOutput 中运行类似“ps aux | grep 'some keyword' | awk '{...}'”的命令。例如getProcessOutput("ps aux | grep 'some keyword' | awk '{...}'")

任何建议,将不胜感激。

0 投票
1 回答
432 浏览

python - twisted defer 使类实例变量的赋值无效

我有一个类 A 有两个方法,method_one 使用 defer 和 method_two ,在回调函数中我为 self.value 设置了一个值并将其添加到 defer 的回调链中。但之后 self.value 仍然是 method_two 中的原始值。总之,回调函数中self.value的赋值是无效的。

提前致谢 :-)

0 投票
1 回答
259 浏览

twisted - python twisted:对每个 id 强制执行一个连接

我有一个使用 SSL 套接字并使用证书来识别连接到服务器的不同客户端的扭曲服务器。我想强制每个可能的ID只有一个连接的状态。我能想到的两种方法是跟踪连接的 id,然后不允许使用相同 id 的第二个连接,或者允许第二个连接并立即终止第一个。我正在尝试稍后做,但遇到了一些问题(我将在最后解释我的选择)

我在工厂类中存储了一个连接列表,然后在 SSL 握手之后,我将客户端的 id 与该列表进行比较。如果它已经在该列表中,我会尝试调用.transport.abortConnection()它。然后我想做一些正常的事情来在我的数据库中记录新的连接。但是,调用abortConnection()似乎并没有connectionLost()直接调用,这是我进行清理并调用数据库以表示连接丢失的地方。因此,我的代码然后记录了该 id 已连接,但后来调用connectionLost()导致数据库似乎已断开该 id。

是否有某种方法可以阻止传入的第二个连接进一步处理,直到第一个连接完成断开连接处理?

选择说明: 我这样做的全部原因是我有 NAT 后面的客户端,这些客户端似乎在相当定期地更改其 IP 地址(每 1-3 天一次)。连接的设备只会将其连接不干净地切断,然后它们会尝试使用新 IP 重新连接。但是,我的服务器没有收到有关断开连接的通知,并且通常必须使连接超时。但是,在服务器超时连接之前,客户端有时会设法重新连接,然后服务器处于同一个客户端有两个明显连接的状态。因此,通常第一个连接是我真正想要终止的连接。

0 投票
1 回答
128 浏览

python - Twisted 中的 pauseProducing() 是否保证不再调用 dataReceived()?

这是我的问题的扩展: python twisted: enforcing a single connection per id

我正在尝试对每个 ID 强制执行单一连接。如果一个新连接的 id 与现有连接相同,我会尝试杀死旧连接并用新连接替换它。我通过暂停新的,杀死旧的,然后取消暂停新的来做到这一点。我假设在暂停连接上的传输后,我不会再接到任何电话,dataReceived()但情况似乎并非如此。

在我的日志中,我记录了我pauseProducingdataReceived方法中的位置,然后返回。在我对同一个对象进行第二次调用后立即(1ms!)dataReceived没有调用取消暂停生产。

我的假设是关于不再调用dataReceived之后pauseProducing的错误还是我发现了一个错误?