def main(): global app handle_args() port = config.PORT if port != DEFAULT_PORT: # 指定端口优先级最高 os.environ["PORT"] = port if not os.environ.get("PORT"): os.environ["PORT"] = port var_env = dict() config.set("port", port) config.set("start_time", xutils.format_datetime()) # 关闭autoreload使用自己实现的版本 app = web.application(list(), var_env, autoreload=False) # 初始化数据库 xtables.init() # 加载持久化的缓存 xutils.cacheutil.load_dump() # 最后的mapping,用于匹配优先级较低的处理器 last_mapping = (r"/tools/(.*)", "handlers.tools.tools.handler") manager = xmanager.init(app, var_env, last_mapping = last_mapping) xmanager.reload() def reload_callback(): # 重新加载handlers目录下的所有模块 xmanager.reload() autoreload_thread.clear_watched_files() autoreload_thread.watch_dir(xconfig.HANDLERS_DIR, recursive=True) # autoreload just reload models autoreload_thread = AutoReloadThread(reload_callback) autoreload_thread.watch_dir(xconfig.HANDLERS_DIR, recursive=True) autoreload_thread.watch_file("xtemplate.py") autoreload_thread.start() # 启动定时任务检查 manager.run_task() # 注册信号响应 # 键盘终止信号 signal.signal(signal.SIGINT, handle_signal) # kill终止信号 signal.signal(signal.SIGTERM, handle_signal) # 时钟信号 # signal.signal(signal.SIGALRM, handle_signal) # signal.alarm(5) # 启动打开浏览器选项 if xconfig.OPEN_IN_BROWSER: webbrowser.open("http://localhost:%s/" % xconfig.PORT) app.run()
def init_autoreload(): def reload_callback(): # 重新加载handlers目录下的所有模块 xmanager.reload() autoreload_thread.clear_watched_files() autoreload_thread.watch_dir(xconfig.HANDLERS_DIR, recursive=True) # autoreload just reload models autoreload_thread = AutoReloadThread(reload_callback) autoreload_thread.watch_dir(xconfig.HANDLERS_DIR, recursive=True) autoreload_thread.watch_file("core/xtemplate.py") autoreload_thread.start()
def main(): global app # 处理初始化参数 handle_args() # 初始化日志 xutils.init_logger() # 初始化数据库 try_init_db() # 加载缓存 try_load_cache() # 关闭autoreload使用自己实现的版本 var_env = dict() app = web.application(list(), var_env, autoreload=False) # 最后的mapping,用于匹配优先级较低的处理器 last_mapping = (r"/tools/(.*)", "handlers.tools.tools.handler") manager = xmanager.init(app, var_env, last_mapping = last_mapping) xmanager.reload() # 重新加载template xtemplate.reload() def reload_callback(): # 重新加载handlers目录下的所有模块 xmanager.reload() autoreload_thread.clear_watched_files() autoreload_thread.watch_dir(xconfig.HANDLERS_DIR, recursive=True) # autoreload just reload models autoreload_thread = AutoReloadThread(reload_callback) autoreload_thread.watch_dir(xconfig.HANDLERS_DIR, recursive=True) autoreload_thread.watch_file("core/xtemplate.py") autoreload_thread.start() # 启动定时任务检查 manager.run_task() # 注册信号响应 # 键盘终止信号 signal.signal(signal.SIGINT, handle_signal) # kill终止信号 signal.signal(signal.SIGTERM, handle_signal) # 时钟信号 # signal.signal(signal.SIGALRM, handle_signal) # signal.alarm(5) # 启动打开浏览器选项 if xconfig.OPEN_IN_BROWSER: webbrowser.open("http://localhost:%s/" % xconfig.PORT) app.run()
def main(): global app handle_args() port = config.PORT if not os.environ.get("PORT"): os.environ["PORT"] = port var_env = dict() config.set("port", port) config.set("start_time", xutils.format_datetime()) # 关闭autoreload使用自己实现的版本 app = web.application(list(), var_env, autoreload=False) # 初始化数据库 xtables.init() # 最后的mapping,用于匹配优先级较低的处理器 last_mapping = (r"/tools/(.*)", "handlers.tools.tools.handler") manager = xmanager.init(app, var_env, last_mapping=last_mapping) manager.reload() def reload_callback(): # 重新加载handlers目录下的所有模块 manager.reload() autoreload_thread.clear_watched_files() autoreload_thread.watch_dir(xconfig.HANDLERS_DIR, recursive=True) # autoreload just reload models autoreload_thread = AutoReloadThread(reload_callback) autoreload_thread.watch_dir(xconfig.HANDLERS_DIR, recursive=True) autoreload_thread.watch_file("xtemplate.py") autoreload_thread.start() # 启动定时任务检查 manager.run_task() if xconfig.INIT_SCRIPT is not None: xutils.exec_script(xconfig.INIT_SCRIPT) if xconfig.OPEN_IN_BROWSER: webbrowser.open("http://localhost:%s/" % xconfig.PORT) app.run()