gpt4 book ai didi

python - 将参数传递给扭曲的工厂以传递给 session

转载 作者:太空狗 更新时间:2023-10-30 01:16:16 24 4
gpt4 key购买 nike

我已经基于扭曲的 sshsimpleserver.py 编写了一个 sshdaemon,它运行良好。

http://twistedmatrix.com/documents/current/conch/examples/

但我现在想将命令行参数传递给 EchoProtocol,以根据参数更改其行为。我怎样才能做到这一点?在这种情况下,我想通过我的协议(protocol)的“options.test”参数。

[...]

if __name__ == '__main__':
parser = optparse.OptionParser()
parser.add_option('-p', '--port', action = 'store', type = 'int',
dest = 'port', default = 1235, help = 'server port')
parser.add_option('-t', '--test', action = 'store', type =
'string', dest = 'test', default = '123')
(options, args) = parser.parse_args()

components.registerAdapter(ExampleSession, ExampleAvatar,
session.ISession)

[...]

reactor.listenTCP(options.port, ExampleFactory())
reactor.run()

由于 session 实例是由工厂创建的,我似乎无法能够将额外的参数传递给 session 构造函数和协议(protocol)。我已经尝试将选项名称设置为全局名称,但它在协议(protocol)上下文/范围中不可见。

顺便说一句。我将协议(protocol)类移到了它自己的文件中,并将其导入到主文件中。

最佳答案

您可以创建自己的工厂并将参数传递给它。请参阅 docs 中的示例

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

class QOTD(Protocol):

def connectionMade(self):
# self.factory was set by the factory's default buildProtocol:
self.transport.write(self.factory.quote + '\r\n')
self.transport.loseConnection()


class QOTDFactory(Factory):

# This will be used by the default buildProtocol to create new protocols:
protocol = QOTD

def __init__(self, quote=None):
self.quote = quote or 'An apple a day keeps the doctor away'

endpoint = TCP4ServerEndpoint(reactor, 8007)
endpoint.listen(QOTDFactory("configurable quote"))
reactor.run()

关于python - 将参数传递给扭曲的工厂以传递给 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14848793/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com