Web应用程序:在请求之间保留大对象

时间:2012-01-01 22:42:05

标签: python

我正在开发与基因组搜索相关的Web应用程序。此应用程序通过Cython绑定使用此suffix tree library。这种类型的对象很大(数百MB到10GB),并且从磁盘加载时需要花费很长时间来处理它们以响应页面请求。我正在寻找一种在服务器启动时加载其中几个对象的方法,然后将它们用于所有页面请求。

我尝试使用多处理模块使用远程管理器/客户端设置,以this demo为模型,但当客户端连接错误消息表明对象不可选时,它会失败。

1 个答案:

答案 0 :(得分:7)

我建议写一个小的Flask(甚至是原始的WSGI ......但是使用Flask可能更简单,因为它更容易启动并快速运行)应用程序加载基因组数据库然后公开一个简单的API。像这样:

app = Flask(__name__)
database = load_database()

@app.route('/get_genomes')
def get_genomes():
    return database.all_genomes()

app.run(debug=True)

或者,你知道,有点更明智。

此外,如果您需要一次处理多个请求(我相信app.run一次只能处理一个请求),请先通过线程...如果这太慢,您可以{{ 1}} 在加载数据库之后,从那里运行多个请求处理程序(这样它们将在内存中共享相同的数据库)。