def watch(config: Config):
observer = Observer()
event_handler = HarrierEventHandler(config)
logger.info('Watch mode starting...')
event_handler.build()
event_handler.check_build()
server_process = Process(target=serve, args=(config.target_dir, config.uri_subdirectory, config.serve_port,
config.asset_file))
server_process.start()
sp_ctrl = SubprocessGroupController(config.subprocesses)
observer.schedule(event_handler, str(config.root), recursive=True)
observer.start()
try:
event_handler.wait(sp_ctrl.check)
except KeyboardInterrupt:
pass
finally:
logger.warning('killing dev server')
sp_ctrl.terminate()
observer.stop()
observer.join()
if server_process.exitcode not in {None, 0}:
raise RuntimeError('Server process already terminated with exit code {}'.format(server_process.exitcode))
else:
server_process.terminate()
time.sleep(0.1)
评论列表
文章目录