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