美文网首页
Django2.2使用 jpype 时报错

Django2.2使用 jpype 时报错

作者: 王文强Python | 来源:发表于2019-06-01 16:53 被阅读0次

    1、我有一个Django项目,里面用到 jpype 调用Java 包(功能:将word转成html文件),前端通过from表单将word文件(.doc后缀) 上传到后端,后台先保存到media文件夹下,然后调用自定义函数WrongInspect()这个函数里面再用到 jpype 组件 。

    2、我在Windows上面随便转化几个文件都不会报错,但是上了centos服务器报错。前端第一次post 上传文件时能够正常完成业务逻辑(将word转成html文件),但是第二次post上传文件时就会报错。

    3、我在启动JVM时先做了判断防止内存泄漏                                                                                           if not isJVMStarted():                                                                                                startJVM(getDefaultJVMPath(),"-ea","-Djava.class.path=%s" % (jarpath1),"-Xms1g","-Xmx1g")

    4、下面是WrongInspect()函数的核心代码:

    def WrongInspect(name):

            current_dirname = os.path.dirname(__file__)

            dictPath = os.path.join(current_dirname,'lib')

            jarpath1 =f"{dictPath}/ReadWord.jar"

            if not isJVMStarted():

                    startJVM(getDefaultJVMPath(),"-ea","-Djava.class.path=%s" % (jarpath1),"-Xms1g","-Xmx1g")

            HwpfConv = JClass("com.cjsc.poi.HwpfConv")

            hw = HwpfConv()

            # 第一次转化文件格式时没有问题,但第二次转化文件格式时下面这一行代码报错

             hw.Word2003ToHtml(f"{current_dirname}/Wrong", name,".doc")

    最后的解决办法是开个多进程就解决了上面的问题,因为整个django项目就是一个进程,每次访问时相当于一个线程进来,线程中关闭JVM但是进程中还是依然开启着,所以创建一个多进程就解决问题了!

    相关文章

      网友评论

          本文标题:Django2.2使用 jpype 时报错

          本文链接:https://www.haomeiwen.com/subject/fbvduqtx.html