首页 > 解决方案 > 启动烧瓶应用程序阻塞 Joiner 线程以从队列中获取数据

问题描述

我的要求是在启动烧瓶应用程序之前启动一个长时间运行的恢复过程。

为了处理恢复进程的退出,我创建了一个等待 Process.Join() 的线程。问题是在将进程对象插入队列后,Joiner 线程没有获取进程对象。这似乎是因为烧瓶应用程序。如果我评论烧瓶应用程序启动(app.run),连接线程工作正常。它获取队列中的数据以继续加入。

我只是无法理解问题所在。它是由烧瓶应用程序还是其他原因引起的。任何帮助将不胜感激。

app = Flask(__name__, template_folder='/etc/templates',
        static_folder='/etc/static')
def Joiner(jQueue):
    while True:
        try:
            child = jQueue.get()
            child.join()
        except Exception as error:
            logging.info("Error {}".format(str(error)))

if __name__ == '__main__':
    joinQueue = Queue()
    reader_p =  threading.Thread(target=Joiner, args=(joinQueue,))
    reader_p.start()    
    maybe_resume = Process(target=resumeT)
    maybe_resume.start()
    joinQueue.put(maybe_resume)
    app.run(host='0.0.0.0', port=8081, threaded=True)

标签: pythonflaskmultiprocessingqueue

解决方案


推荐阅读