1
我正試圖通過不斷髮送數據來創建一個最大化用戶下游的應用程序。是否有一個變量可以告訴輸出緩衝區中有多少個字節?我說「out buffer」,但是在發送給客戶端之前緩衝的數據有沒有更好的術語?我是否以正確的方式去做這件事? self.transport.write()100兆似乎不實用。用Twisted發送隨機數據
我正試圖通過不斷髮送數據來創建一個最大化用戶下游的應用程序。是否有一個變量可以告訴輸出緩衝區中有多少個字節?我說「out buffer」,但是在發送給客戶端之前緩衝的數據有沒有更好的術語?我是否以正確的方式去做這件事? self.transport.write()100兆似乎不實用。用Twisted發送隨機數據
Twisted公開此信息的方式是使用一對通常稱爲「生產者」和「消費者」的API。您可以在Twisted網站上找到關於它們的a document。
在你的情況下,「拉生產者」可能是合適的,因爲你的隨機數據可能不是來自事件源,但可以根據需要生成。草圖看起來像這樣(希望上面的鏈接的文檔將解釋爲什麼這個工程):
from os import urandom
from zope.interface import implements
from twisted.internet.interfaces import IPullProducer
class RandomProducer(object):
implements(IPullProducer)
def __init__(self, consumer):
self.consumer = consumer
def resumeProducing(self):
self.consumer.write(urandom(2 ** 16))
def stopProducing(self):
pass
因此,例如,當連接建立時,您可以在此生產與運輸註冊:
from twisted.internet.protocol import Protocol
class RandomProtocol(Protocol):
def connectionMade(self):
self.transport.registerProducer(RandomProducer(self.transport), False)
這將盡可能快地在客戶端發送隨機數據。