有没有办法强制self.transport.write(response)立即写入它的连接,这样下一次对self.transport.write(response)的调用就不会被缓冲到同一个调用中。
我们有一个具有无法修改的遗留软件的客户端,它读取第一个请求,然后再次开始读取,我遇到的问题是扭曲地将两个写入合并在一起,这破坏了客户端我试图查看延迟的任何想法,但我不认为在这种情况下它会有帮助
示例:
self.transport.write("|123|") # amount of messages to follow
a loop to generate next message
self.transport.write("|message 1 text here|")期望值:
|123|
|message 1 text here|结果:
|123||message 1 text here|发布于 2013-07-20 07:39:01
我在使用低级Python2.6时遇到了一些相关的问题。与我交谈的主机期望一个ACK字符,然后是一个单独的数据缓冲区,它们都是同时出现的。最重要的是,这是一个TLS连接。但是,如果直接引用套接字,则可以调用sendall(),如下所示:
self.transport.write(Global.ACK)至:
self.transport.getHandle().sendall(Global.ACK)..。这应该是可行的。这在X86上的Python2.7和Twisted上似乎不是问题,只是在SHEEVAPlug ARM处理器上的Python2.6。
发布于 2010-09-02 01:12:30
你能说出你使用的是哪种交通工具吗?对于大多数实现,这是典型的方法:
def write(self, data):
if data:
if self.writeInProgress:
self.outQueue.append(data)
else:
....根据这些细节,可以将write函数的行为更改为所需的行为。
发布于 2019-03-21 15:19:06
也许您可以将您的协议注册为传输的pull生产者
self.transport.registerProducer(self, False)然后在您的协议中创建一个write方法,让它的作业缓冲数据,直到传输调用您的协议resumeProducing方法逐个获取数据为止。
def write(self, data):
self._buffers.append(data)
def resumeProducing(self):
data = self._buffers.pop()
self.transport.write(data)https://stackoverflow.com/questions/3617584
复制相似问题