Flask 在烧瓶中使用pylucene时,如何避免attachCurrentThread异常?

Flask 在烧瓶中使用pylucene时,如何避免attachCurrentThread异常?,flask,pylucene,Flask,Pylucene,我围绕一个类构建了一个简单的包装器服务,该类使用pylucene(6.5)读取和查询Lucene索引。运行服务器时出现以下错误: 运行时错误:必须首先调用attachCurrentThread() 我假设问题源于lucene.initVM()语句,并尝试将其移动到不同的位置。如果我把它放在request方法中,它会工作,但这意味着我需要在每个请求中加载索引 有更好的方法吗?在第一次请求之前,将初始化语句(在本例中是IndexHandler的构造函数)放入一个带有flaskdecorator@ap

我围绕一个类构建了一个简单的包装器服务,该类使用
pylucene
(6.5)读取和查询Lucene索引。运行服务器时出现以下错误:

运行时错误:必须首先调用attachCurrentThread()

我假设问题源于
lucene.initVM()
语句,并尝试将其移动到不同的位置。如果我把它放在request方法中,它会工作,但这意味着我需要在每个请求中加载索引


有更好的方法吗?

在第一次请求之前,将初始化语句(在本例中是
IndexHandler
的构造函数)放入一个带有
flask
decorator
@app的函数中解决问题

@app.before_first_request
def load_index():
    global index_handler
    index_handler = IndexHandler()
在处理每个与lucene相关的请求之前调用lucene.getVMEnv().attachCurrentThread(),修复了它,