首页 > 解决方案 > JVM 在 Django 中使用第二种 post 方法崩溃

问题描述

我正在尝试使用 Django 为我的 nlp 项目构建 API。我有 JAR 文件并在 Python 中使用 Jpype 与 JVM 一起运行它。它在第一个 POST 中运行良好,但在第二个 post 方法中崩溃,没有任何例外。

我认为它的原因是 JVM 并尝试了以下代码但没有奏效:

if not jp.isJVMStarted():
    print('JVM starting...')
    jp.startJVM(jp.getDefaultJVMPath(), "-Djava.class.path=%s" % JAR_PATH)
    TurkishMorphology = jp.JClass('zemberek.morphology.TurkishMorphology')
    Paths = jp.JClass('java.nio.file.Paths')
else:
    print('JVM shutting down...')
    jp.shutdownJVM()
    print('JVM starting...')
    jp.startJVM(jp.getDefaultJVMPath(), "-Djava.class.path=%s" % JAR_PATH)

我的所有代码:

def getMorfoloji(sentence):
    JAR_PATH = r'bin\zemberek-full.jar'

    if not jp.isJVMStarted():
        print('JVM starting...')
        jp.startJVM(jp.getDefaultJVMPath(), "-Djava.class.path=%s" % JAR_PATH)
        TurkishMorphology = jp.JClass('zemberek.morphology.TurkishMorphology')
        Paths = jp.JClass('java.nio.file.Paths')
    else:
        print('JVM shutting down...')
        jp.shutdownJVM()
        print('JVM starting...')
        jp.startJVM(jp.getDefaultJVMPath(), "-Djava.class.path=%s" % JAR_PATH)

    TurkishMorphology = jp.JClass('zemberek.morphology.TurkishMorphology')
    Paths = jp.JClass('java.nio.file.Paths')
    morphology = TurkishMorphology.createWithDefaults()
    analysis = morphology.analyzeSentence(sentence)
    results = morphology.disambiguate(sentence, analysis).bestAnalysis()
    analysis_result = ''
    for i in results:
        analysis_result += str(i)
        analysis_result += ' -- '
    print(analysis_result)
    jp.shutdownJVM()
    return analysis_result

我怎样才能继续运行 JVM 而不让它停止?

标签: pythonjvmjpype

解决方案


推荐阅读