Пример #1
0
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()
Пример #2
0
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()
Пример #3
0
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()
Пример #4
0
def main():
    global app

    handle_args()
    port = config.PORT
    if not os.environ.get("PORT"):
        os.environ["PORT"] = port

    var_env = dict()

    config.set("host", "localhost")
    config.set("port", port)
    config.set("start_time", xutils.format_datetime())
    # I can reload the system by myself
    app = web.application(list(), var_env, autoreload=False)

    check_db()

    # 最后的mapping,用于匹配优先级较低的处理器
    last_mapping = (r"/tools/(.*)", "handlers.tools.tools.handler")

    mgr = xmanager.init(app, var_env, last_mapping=last_mapping)
    mgr.reload()

    def stop_callback():
        # app.stop()
        mgr.reload()
        autoreload_thread.clear_watched_files()
        # autoreload_thread.watch_dir("template")
        autoreload_thread.watch_dir(config.HANDLERS_DIR, recursive=True)

    # autoreload just reload models
    autoreload_thread = AutoReloadThread(stop_callback)
    autoreload_thread.watch_dir(config.HANDLERS_DIR, recursive=True)
    autoreload_thread.start()
    mgr.run_task()

    if xconfig.OPEN_IN_BROWSER:
        webbrowser.open("http://localhost:1234/")
    app.run()
Пример #5
0
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()