首页 > 解决方案 > 有没有办法在线程上运行烧瓶?

问题描述

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

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

但 foo 函数永远不会启动。

我想了解如何解决问题或获得实现它的替代选项。

谢谢!

标签: python-3.xmultithreadingflask

解决方案


转到Flask.run()的文档,我们看到提供的选项(例如线程)被转发到底层函数werkzeug.run_simple()。的文档说明了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()

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


推荐阅读