本文整理汇总了Python中zeroconf.Zeroconf.unregister_all_services方法的典型用法代码示例。如果您正苦于以下问题:Python Zeroconf.unregister_all_services方法的具体用法?Python Zeroconf.unregister_all_services怎么用?Python Zeroconf.unregister_all_services使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类zeroconf.Zeroconf
的用法示例。
在下文中一共展示了Zeroconf.unregister_all_services方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: Server
# 需要导入模块: from zeroconf import Zeroconf [as 别名]
# 或者: from zeroconf.Zeroconf import unregister_all_services [as 别名]
class Server(object):
'''
NetRNG server
'''
def __init__(self,
listen_address=None,
port=None,
max_clients=None,
sample_size_bytes=None,
hwrng_device=None,
use_zeroconf=False):
log.info('NetRNG server: initializing')
# Listen address used by the server
self.listen_address = listen_address
# TCP port to listen on
self.port = port
# Maximum number of clients to accept, this prevents your HWRNG from being
# overloaded, starving clients. This requires testing and depends entirely on
# how fast your HWRNG can be read. A device that can spit out 1mbps (100KB/s) could
# give 100 clients 1KB/s, but a device that can only generate 128bps may only
# be able to serve 1 client slowly
self.max_clients = max_clients
# How much random data to request from the device for each client push
self.sample_size_bytes = sample_size_bytes
# Source device to use for random data, should be something fast and
# high quality, DON'T set this to /dev/random
self.hwrng_device = hwrng_device
# open the hwrng for reading later during client requests
self.hwrng = open(self.hwrng_device, 'rb')
# lock to prevent multiple clients from getting the same random samples
self.rng_lock = RLock()
self.use_zeroconf = use_zeroconf
if self.use_zeroconf:
self.zeroconf_controller = Zeroconf()
def broadcast_service(self):
if self.listen_address == '0.0.0.0':
raise Exception('NetRNG server: zeroconf currently requires a specific listen address in /etc/netrng.conf')
desc = {'version': __version__}
info = ServiceInfo('_netrng._tcp.local.', '{}._netrng._tcp.local.'.format(socket.gethostname()), socket.inet_aton(self.listen_address), self.port, 0, 0, desc)
log.info('NetRNG server: registering service with Bonjour: %s', info)
self.zeroconf_controller.register_service(info)
def unregister_service(self):
log.info('NetRNG server: unregistering all bonjour services')
self.zeroconf_controller.unregister_all_services()
def serve(self, sock, address):
'''
Serves client connections providing random samples to them in a one-to-many
request response architecture, with locking to ensure each client gets unique
samples
'''
log.debug('NetRNG server: client connected %s', address)
try:
while True:
log.debug('NetRNG server: receive cycle start')
requestmsg = b""
with Timeout(3, gevent.Timeout):
while True:
data = sock.recv(1024)
requestmsg = requestmsg + data
log.debug('NetRNG server: receive cycle')
if SOCKET_DELIMITER in requestmsg:
break
gevent.sleep()
requestmsg = requestmsg.replace(SOCKET_DELIMITER, b'')
request = msgpack.unpackb(requestmsg)
log.debug('NetRNG server: receive cycle done')
log.debug('NetRNG server: request received %s', request)
if request[b'get'] == b'sample':
with self.rng_lock:
log.debug('NetRNG server: rng lock acquired')
sample = self.hwrng.read(self.sample_size_bytes)
log.debug('NetRNG server: rng lock released')
#.........这里部分代码省略.........