2013-05-19 142 views
0

我很困惑,为什么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) 

当我注释掉数据库建设;服务器运行。

在这两种情况下,我都会得到时间戳“Took:[seconds]”,表示之前没有错误发生。

回答

1

问题是模块级代码,并且可能是您正在使用reloader开关的事实。检查this

所有模块级代码在重新载入器打开时至少运行两次。我还没有测试过这个,但这样做会很有意义,因为如果数据库已经被捆绑,它将无法产生一个孩子。

试试这个:

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) 
+0

感谢的是,现在很想写一个函数,以确保数据库始终为每个端点构建...不幸的是,我需要装点每个端点与此有关。如果需要,是否有其他选择:'reloader = True'? –

+0

我发现reloader的功能无论如何都是非常麻烦的。你可以添加一个持久性文件来指示数据库是否已经加载,以确保只加载了一个实例,但我想不出任何其他的东西。 – Tadgh