def _listen_configs(self, error_event):
closing = False
term_count = 0
configs = frozenset()
try:
while True:
try:
while not closing:
if frozenset(self._handlers) == configs:
configs = yield idiokit.next()
configs = frozenset(iter_startups(config.flatten(configs)))
yield self._apply(configs, error_event)
yield self._wait(self._handlers.values())
except idiokit.Signal as sig:
closing = True
if sig.signum == signal.SIGUSR1:
self._clean(signal.SIGTERM)
continue
if sig.signum == signal.SIGUSR2:
self._clean(signal.SIGKILL)
continue
if term_count == 0:
self._clean(signal.SIGTERM)
term_count += 1
continue
break
finally:
self._check()
评论列表
文章目录