有没有办法在一个线程上运行flask?

时间:2019-11-14 10:19:13

标签: python-3.x multithreading flask

为了实现一个公开REST-api并同时运行其他功能的系统,我尝试像以下烧瓶一样使用烧瓶:

app = Flask(__name__)
app.run(threaded=True)
foo()

但是foo函数永远不会启动。

我想了解如何解决该问题或获得替代方案来实现它。

谢谢!

1 个答案:

答案 0 :(得分:0)

转到Flask.run()的文档,我们看到提供的选项(例如线程)已转发到基础函数werkzeug.run_simple()werkzeug.run_simple()的{​​{3}}关于threaded参数说了以下话:

  

线程化–进程应在单独的线程中处理每个请求吗?

这意味着将在单独的线程中处理每个REST调用,但不会在后台启动服务器(这似乎是您想要的)。相反,您可以使用多处理中的documentation类:

from flask import Flask
app = Flask(__name__)

from multiprocessing import Process
p = Process(target=app.run)
p.start()
foo()

这将在后台启动flask应用程序,让您在启动应用程序后运行其他功能。