/ / Ako spočítať počet aktuálne pripojených protokolov v skrútenom rámci Python - python, twisted, twisted.internet

Ako počítať počet momentálne pripojených protokolov v Python skrútenom rámci - python, twisted, twisted.internet

Snažil som sa spočítať počet aktívnych protokolov v skrútení, ale dostal som chybu:

exceptions.AttributeError: Factory instance has no attribute "numProtocols"

Nižšie je uvedený kód:

class EchoPro(Protocol):
def connectionMade(self):
self.factory.numProtocols = self.factory.numProtocols+1
if self.factory.numProtocols > 100:
self.transport.write("Too many connections, try later")
self.transport.loseConnection()
def connectionLost(self, reason):
self.factory.numProtocols = self.factory.numProtocols-1

def dataReceived(self, data):
self.transport.write(data)

odpovede:

5 pre odpoveď č. 1

To je preto, lebo self.factory neobsahuje numProtocols atribút.

Ak chcete prispôsobiť továreň protokolu, vytvorte pre svoj protokol továreň pomocou podtried twisted.internet.protocol.Factory.

Príklad:

from twisted.internet.protocol import Protocol, Factory
from twisted.internet import reactor

class Echo(Protocol):
# ... your implementation as it is now ...

class EchoFactory(Factory):  # Factory for your protocol
protocol = Echo
numProtocols = 0

factory = EchoFactory()
factory.protocol = Echo

reactor.listenTCP(8007, factory)
reactor.run()

Prípadne by ste mohli jednoducho zmeniť inštanciu továrne, keď bude vytvorená, ako je uvedené v dokumentoch.

Príklad:

from twisted.internet.protocol import Protocol, Factory
from twisted.internet import reactor

class Echo(Protocol):
# ... your implementation as it is now ...

def getEchoFactory():
factory = Factory()
factory.protocol = Echo
factory.numProtocols = 0
return factory

reactor.listenTCP(8007, getEchoFactory())
reactor.run()