编程语言
首页 > 编程语言> > python – 在Django中使用pylucene时,initVM和attachCurrentThread的最佳位置在哪里

python – 在Django中使用pylucene时,initVM和attachCurrentThread的最佳位置在哪里

作者:互联网

我在基于django的网站上使用pylucene,我想知道是否有人知道启动jvm并附加线程的最佳位置.我不想每次有人加载页面时都要启动一个新的jvm,但是当我在搜索时附加线程时,我偶尔会在django中得到神秘的“无法导入名称”错误.

在views.py中附加线程是错误的吗?

编辑:我特别想找到一种方法来实例化一个单独的jvm并让它运行,所以我可以根据需要将线程附加到它.实例化jvm大约需要两秒钟,这在搜索时会有明显的延迟.

解决方法:

我从来没有在Django中使用pylucene,虽然应该在一个文件中调用initVM(),当Django服务器启动时它会被加载(settings.py会是一个好地方).

关于attachCurrentThread:问题是你在哪里使用lucene模块.如果它在views.py中,那么当然在views.py中进行.虽然我认为你不应该在每个函数调用上都这样做.如果使用基于类的通用Django视图,则可以将VM环境保存在特定于对象的变量中.你是否在views.py的全球范围内尝试过它?

另请注意,调用attachCurrentThread时总会涉及两个步骤:

vm_env = lucene.getVMEnv()
vm_env.attachCurrentThread()

增加(见下面的评论):

我认为这取决于您如何导入项目中的设置.如果您只是在应用程序中执行“设置”,则会多次加载模块.而是始终从django.conf导入设置.据我所知,您的原始设置文件将仅在服务器启动时加载一次

标签:python,jvm,django,pylucene
来源: https://codeday.me/bug/20190626/1295331.html