我正在开发与基因组搜索相关的Web应用程序。此应用程序通过Cython绑定使用此suffix tree library。这种类型的对象很大(数百MB到10GB),并且从磁盘加载时需要花费很长时间来处理它们以响应页面请求。我正在寻找一种在服务器启动时加载其中几个对象的方法,然后将它们用于所有页面请求。
我尝试使用多处理模块使用远程管理器/客户端设置,以this demo为模型,但当客户端连接错误消息表明对象不可选时,它会失败。
答案 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}} 在加载数据库之后,从那里运行多个请求处理程序(这样它们将在内存中共享相同的数据库)。