我围绕一个类构建了一个简单的包装器服务,该类使用pylucene
(6.5)读取和查询Lucene索引。运行服务器时出现以下错误:
RuntimeError: attachCurrentThread() must be called first
我认为问题源于lucene.initVM()
语句,我尝试在不同的地方移动它。如果我将它放在请求方法中,它就可以工作,但这意味着我需要为每个请求加载索引。
有更好的方法吗?
答案 0 :(得分:0)
将初始化语句(在本例中为IndexHandler
的构造函数)放在带有flask
装饰器@app.before_first_request
的函数中可以解决问题。
@app.before_first_request
def load_index():
global index_handler
index_handler = IndexHandler()
答案 1 :(得分:0)
同样的问题。通过以下代码解决:
@app.route('/', methods=['POST'])
def your_method():
vm_env = lucene.getVMEnv()
vm_env.attachCurrentThread()
不要理会detachCurrentThread;这是不必要的,并且可能导致崩溃。