Python 为什么';服务器负载?

Python 为什么';服务器负载?,python,webserver,wsgi,bottle,wsgiref,Python,Webserver,Wsgi,Bottle,Wsgiref,我不明白为什么bottlepy服务器不运行: if __name__ == '__main__': start = datetime.now() db = Database(force_refresh_cache=False, timestamp_filename='timestamp.pickle', schema_filename='schema.pickle') print datetime.n

我不明白为什么bottlepy服务器不运行:

if __name__ == '__main__':
    start = datetime.now()
    db = Database(force_refresh_cache=False,
                  timestamp_filename='timestamp.pickle',
                  schema_filename='schema.pickle')
    print datetime.now(), 'Took:', (datetime.now() - start).total_seconds()

    run(host='localhost', port=80, reloader=True, debug=True)
当我评论db结构时;服务器正在运行


在这两种情况下,我都会得到时间戳“take:[秒]”行,这意味着之前没有发生错误。

问题在于模块级代码,并且可能是您正在使用重载开关。退房

当重新加载程序打开时,所有模块级代码至少运行两次。我还没有测试过这个,但这是有意义的,因为如果数据库已经被占用,它将无法生成一个孩子

试试这个:

if __name__ == '__main__':
    start = datetime.now()
    db = Database(force_refresh_cache=False,
                  timestamp_filename='timestamp.pickle',
                  schema_filename='schema.pickle')
    print datetime.now(), 'Took:', (datetime.now() - start).total_seconds()

    run(host='localhost', port=80, debug=True)

多亏了这一点,现在我尝试编写一个函数来确保始终为每个端点构造数据库……不幸的是,我需要用这个来装饰每个端点。如果我想的话,还有其他选择吗:
reloader=True
?我发现reloader的功能无论如何都很糟糕。您可以添加一个持久性文件来指示数据库是否已加载,以确保只加载了一个实例,但我想不出还有什么其他方法。