我正在尝试扩展现有的python 3应用程序,以包含rest api。我已经搜索了几天,试图找出如何使rest api成为现有应用程序的子组件,但是我在flask、eve等方面找到的指南并没有说明如何运行生产api,除非api应用程序本身是直接运行的。
我已经成功地将flask rest api添加到我的应用程序中,它按预期响应。然而,至少据开发人员说,它的运行方式是不受支持的,而且据称是不安全的。当我运行应用程序时,会生成一条警告消息,建议我改用wsgi服务器:
* Serving Flask app "api" (lazy loading)
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: off
不可否认,我对此还不太熟悉,所以我不确定这意味着什么,也不知道它在我的情况下是否会起作用。实际上,我正试图做到这一点:
import api as API
class Stuff(object):
def setup(self):
...
self.apiThread = API(...)
def run(self):
...
self.apiThread.start()
该应用程序是大型的、复杂的、成熟的和稳定的,所以我不能和/或不知道如何使它作为api应用程序的子组件工作,比如
this
:
from werkzeug.wrappers import Request, Response
@Request.application
def application(request):
return Response('Hello, World!')
if __name__ == '__main__':
from werkzeug.serving import run_simple
run_simple('localhost', 4000, application)
我见过这样的导游
this
这在某种程度上帮助我理解了web服务器的本质,但我还找不到一个对我有意义的生产解决方案。我是否应该实现一个类
page 2
然后在一个线程中实例化它,如我在示例中所示
Stuff
班级?那能正常工作吗?还是我还缺什么?
任何指导都将不胜感激。
编辑:
gunicorn
对于许多用例来说,建议似乎是常见且正确的——可能包括我的——但是我还不明白为什么。关于
喷枪
佩奇在第一行这样说:
If you want to deploy your Flask application to a WSGI server...
我已经卡住了,因为我还没有建立一个烧瓶应用程序。我在一个线程中运行一个flask服务器,作为一个更大的应用程序的一个非常小的部分。可以这么说,我不明白该怎么扭转局面。