问题标签 [twisted.client]

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 投票
1 回答
414 浏览

python - Refactoring for a twisted tcp client from existing blocking code

I have a python program that currently uses a tcp/ip client module I wrote to receive data from a streaming server. The server outputs lines of data.

My TCP client class is fairly primitive and I want to refactor to use a twisted ReconnectingClientFactory.

The main program currently gets data from a readLines function in my TCP Client that 'yields' the lines as they are received.

The TCP client method is accessed by:

In my TCP Client the readLines method in essence looks like:

When I implement the twisted client I'll want some way for it to behave as an iterator and yield data. I assume I'd do something in the protocol dataReceived method.

I'm lost trying to figure out how this works. It appears to me that twisted deferred are meant for this sort of use but I can't figure out how to use a deferred for my purpose (if my assumption about deferred is correct).

In a perfect world the twisted client would yield the lines as received so a call similar to the present method would do the job. i.e.

But I think that's an oversimplification.

In summary, what I'm trying to do is implement a twisted reconnecting TCP client that behaves something like my readLines method and can be accessed more or less like:

Any pointers will be much appreciated

UPDATE: I just stumbled across 'Crochet' for twisted. At first glance Crochet appears to have been designed for exactly the kind of model that I need... I'll report back after some testing

0 投票
2 回答
2120 浏览

twisted - Twisted ReconnectingClientFactory - 自动重新连接或显式调用connector.connect()?

当使用 Twisted ReconnectingClientFactory 并且连接丢失时,我需要从 clientConnectionLost 方法中调用 connector.connect() 还是自动发生这种情况?

答案可能看起来很明显,因为它毕竟是 ReconnectingClientFactory但 Twisted 文档在这里说了一些让我想知道的东西:

“调用 connector.connect() 可能很有用 - 这将重新连接。”

术语“可能有用”的措辞和使用导致了这个问题,因为基本客户端工厂的 api 文档说了同样的话。

Max的答案是正确的,但经过进一步研究,我认为“校正者”的答案如下:

这允许您执行应用程序所需的特殊操作,然后调用工厂代码以允许 Twisted 为您调用 retry()。

0 投票
1 回答
1165 浏览

python - Twisted - 我需要定期连接/断开客户端连接

我有一个扭曲的 tcp 客户端,我想定期连接,接收 n 秒的日期流,然后断开连接。断开连接后会经过 n 秒,然后再重新开始该过程。

下面是到目前为止我尝试过的代码的非常简短的摘录。当我运行代码时,发出 reactor.stop(),并且在睡眠结束后,当在 startClientConnection() 中调用 reactor.run() 时,我得到一个 twisted.internet 错误“ReactorAlreadyRunning”

我是使用扭曲的新手,我不确定我做错了什么。任何帮助都感激不尽。

0 投票
1 回答
945 浏览

python - 使用扭曲框架(通过 UDP)发送许多 DNS 查询的最佳方式?

我目前正在学习扭曲框架,并且正在尝试使用twisted.names.client.Resolverand制作异步 DNS 解析器twisted.names.client.getHostByName

该脚本应通过查询权威名称服务器来破解子域。每秒 10000-50000 个并发连接是我的最低阈值,以便考虑该工具可用于我的意图。

我的问题是:

  • 扭曲是否适合/适合这种努力?
  • 对于此类项目,与 C 相比,Python/Twisted 的一般性能斗争有多强?我认为扭曲并不完全适合这种想法,并且内部反应堆管理在涉及许多连接时有相当大的开销......
  • masscan这样的项目非常快。作者设法发送了 2 Mio。数据包/秒(使用专用驱动程序 PF_RING 甚至更多)。我目前正在弄清楚他是如何做到的,但我希望我不需要走这条路,因为我想和twisted呆在一起。

变得具体:下面的脚本是我的第一次尝试,但它并没有像希望的那么快。

我强烈认为我的方法是完全错误的。如果你这样调用底部脚本:

在大多数情况下,50 个子域请求一切正常。但是,当我指定 -n1000(以及因此 1000 个 upd dns 请求)时,它需要很长时间(5 分钟及以上),并且反应器会产生各种奇怪的错误,例如 twisted.internet.error.DNSLookupError 和 twisted.internet.defer。超时错误(示例:)Failure: twisted.internet.defer.TimeoutError: [Query('blogger.l.google.com', 255, 1)]。通常,它只是挂起并且没有完成。

我希望每个不存在的子域都会收到一个 twisted.names.error.DNSNameError 或者在子域存在的情况下,一个有效的 A 或 AAAA 资源记录答案,但没有上面的 DNSLookupError。

谁能给我一个提示我做错了什么?通常,epoll() 应该能够轻松发送超过 1000 个请求(几年前,我在 C 和 10000 个 udp 数据报中做了同样的事情,在几秒钟内发送)。那么我没有正确理解扭曲的哪一部分?

collectResults() 不正确吗?我不知道我在做什么错..

最好提前感谢所有答案!

0 投票
3 回答
2155 浏览

python - 如何通过扭曲框架发送具有基本 http 身份验证的 http 请求

当我从http://twistedmatrix.com/documents/13.2.0/web/howto/client.html#auto4<HTML><HEAD><TITLE>401 Unauthorized</TITLE></HEAD>运行代码时出现错误,但我不知道如何在请求中添加身份验证。

更新

我将我的代码更新为:

但是出现以下错误,但我不知道应该提供列表中的哪些内容。

更新

请求的内容应该在一个列表中,如下所示:

0 投票
1 回答
133 浏览

python - 扭曲的应用程序获得名称

我正在尝试以扭曲的方式设置应用程序的名称,并希望稍后使用变量“app”获取名称

我找不到像“app.getName()”这样的东西。任何帮助表示赞赏?

0 投票
1 回答
1574 浏览

python - twisted 在客户端获取响应数据

我按照本教程进行操作,但我不知道如何从服务器获取响应数据。

我知道响应数据会显示在客户端

如何从服务器获取返回的消息并将其存储到变量中?

0 投票
1 回答
206 浏览

python - 使用 Twisted 将图像存储在服务器中

到目前为止,我已经使用 Twisted 框架为聊天应用程序开发了一个服务器,我很难弄清楚如何实现存储某个人的照片。

我的第一个想法是我可以在本地存储图像[这是最好的方法]并处理它,但正如我之前所说,我无法弄清楚如何解析照片。我的意思是如何将它发送到服务器?

应该从客户端 [iOS 应用程序] 中选择照片并发送到服务器,但正如我所说,我不明白它是如何工作的。

我应该在 dataReceived 中添加一些东西还是应该做其他事情?

到目前为止我做了什么

任何建议或想法都会对我很有帮助。

0 投票
1 回答
50 浏览

python - 无法将正则表达式与 Twisted Framework ircbot 上的 re.search 匹配

我将从“我不熟悉 Python”开始。我正在尝试为我的频道更改默认的 ircbot 脚本,但我无法获取re.matchre.search工作。

例如,这有效:

这个也是

然而,这两个条件不适用于机器人(但它们适用于本地脚本):

re.search可以在此处找到未使用的先前版本的脚本

0 投票
1 回答
720 浏览

python - 尝试使用 IMAP 和 Twisted 在大文件夹中获取电子邮件的 uid 时出错

我正在使用最新版本的 Twisted 编写 IMAP 客户端。

我在使用两种不同的方式获取电子邮件 UID 时遇到问题。

首先,我尝试以这种方式使用搜索方法:

这有效,但是当我尝试在大文件夹(包含超过 10.000 条消息)上使用它时,命令失败。

我收到如下错误:

那我做错了吗?或者我可以以更好的方式处理服务器答案吗?

我尝试了其他方法来解决这个问题。我没有使用搜索方法,而是尝试替换:

经过

这也有效(有时比以前的方法慢)但是当我尝试在 imap.mail.yahoo.com 上使用它时,它会失败并出现以下错误:

这很奇怪,因为当我使用 imaplib 运行相同的命令时,我没有收到任何错误,所以我错过了什么吗?

编辑:我解决了这个问题。yahoo 的 IMAP4 服务器似乎有一个非常奇怪的实现。实际上,如果我们要求文件夹中不存在的序列。例如(是我的情况)如果文件夹是空的,我们发送:

服务器失败并显示:

因此,为了绕过这个错误,我只是检查了这样的检查答案:

提前感谢您的任何提示或答案,