【问题标题】:is there a way to run flask on a thread?有没有办法在线程上运行烧瓶?
【发布时间】:2020-03-10 06:28:25
【问题描述】:
为了实现一个公开 REST-api 并同时运行另一个功能的系统,我尝试像下面这样使用烧瓶:
app = Flask(__name__)
app.run(threaded=True)
foo()
但是 foo 函数永远不会启动。
我想了解如何解决问题或获得替代方案来实施它。
谢谢!
【问题讨论】:
标签:
python-3.x
multithreading
flask
【解决方案1】:
转到Flask.run() 的文档,我们看到提供的选项(例如线程)被转发到底层函数werkzeug.run_simple()。 documentation for werkzeug.run_simple() 对 threaded 参数的说明如下:
线程化——进程是否应该在单独的线程中处理每个请求?
这意味着每个 REST 调用都将在单独的线程中处理,但不会在后台启动服务器(这似乎是您想要的)。相反,您可以使用多处理中的 Process 类:
from flask import Flask
app = Flask(__name__)
from multiprocessing import Process
p = Process(target=app.run)
p.start()
foo()
这将在后台启动您的烧瓶应用程序,让您在启动应用程序后运行其他功能。