本文整理汇总了Python中tchannel.TChannel.register方法的典型用法代码示例。如果您正苦于以下问题:Python TChannel.register方法的具体用法?Python TChannel.register怎么用?Python TChannel.register使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类tchannel.TChannel
的用法示例。
在下文中一共展示了TChannel.register方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: MockServer
# 需要导入模块: from tchannel import TChannel [as 别名]
# 或者: from tchannel.TChannel import register [as 别名]
class MockServer(object):
TIMEOUT = 0.15
def __init__(self, port=None, timeout=None):
port = port or 0
self.tchannel = TChannel(
name='test',
hostport="localhost:%s" % str(port),
)
self.timeout = timeout or self.TIMEOUT
self.thread = None
self.ready = False
self.io_loop = None
@property
def port(self):
return self.tchannel.port
@property
def hostport(self):
return self.tchannel.hostport
def expect_call(self, endpoint, scheme='raw', **kwargs):
assert isinstance(scheme, basestring)
if not isinstance(endpoint, basestring):
scheme = 'thrift'
expectation = Expectation()
def handle_expected_endpoint(request):
response = Response()
return expectation.execute(request, response)
self.tchannel.register(
scheme=scheme,
endpoint=endpoint,
handler=handle_expected_endpoint,
**kwargs
)
return expectation
def __enter__(self):
self.start()
return self
def __exit__(self, *args):
self.stop()
def start(self):
assert self.thread is None, 'server already started'
self.thread = threading.Thread(target=self.serve)
self.thread.start()
while not self.ready:
pass
def serve(self):
self.io_loop = tornado.ioloop.IOLoop()
self.io_loop.make_current()
self.tchannel.listen()
def callback():
self.ready = True
self.io_loop.add_callback(callback)
self.io_loop.start()
def stop(self):
self.shutdown()
self.thread.join()
def shutdown(self):
self.io_loop.stop()