【问题标题】:Python JVM Flask [duplicate]Python JVM Flask [重复]
【发布时间】:2019-10-21 01:01:15
【问题描述】:

我使用 Flask 创建了一个简单的 API,在某些方法中我需要像这样使用 jvm:

@app.route('/inference', methods=['POST'])
def inference():   
     jvm.start()

     #do somethings     

     jvm.stop()
     return something

但是如果我这样创建我的方法,每次我调用 API 时服务器都会启动和停止 jvm,它会非常慢。

我的问题是可以在哪里调用 jvm.start() 以便在我的方法中使用,而无需在每次调用 API 时启动和停止 jvm?

感谢您的帮助

【问题讨论】:

    标签: python flask jvm


    【解决方案1】:

    按照元吉的回答,只需使用before_first_request。如果要清理或手动停止 jvm,可以使用 atexit。它会在应用程序终止后运行。

    例如:

    @atexit.register
    def onend():    
        jvm.stop()
    

    【讨论】:

      【解决方案2】:

      flask 中有一个before_first_request 装饰器:

      注册一个函数,在第一次请求此应用程序实例之前运行。

      该函数将在没有任何参数的情况下被调用,并且它的返回值被忽略。


      你可以创建一个函数来启动JVM并使用装饰器注册这个函数:

      @app.before_first_request
      def start_jvm():
          jvm.start()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-17
        • 2021-05-22
        • 2023-01-07
        • 2016-09-04
        • 2022-01-24
        • 2020-10-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多