Это потому, что self.factory
не содержит атрибута numProtocols
.
Чтобы настроить фабрику протокола, вы создаете фабрику для своего протокола путем создания подкласса twisted.internet.protocol.Factory
.
Пример:
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()
В качестве альтернативы, вы можете просто изменить экземпляр фабрикипосле его создания , как это сделано в документах .
Пример:
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()