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

njb*_*her 5 python

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

我尝试使用多处理模块使用远程管理器/客户端设置,在此演示之后建模,但当客户端连接错误消息表明对象不可选时,它会失败.

Dav*_*ver 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)
Run Code Online (Sandbox Code Playgroud)

或者,你知道,更有意义的事情.

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