我正在学习如何使用Flask来运行Web应用程序。许多指南描述了如何使用uWSGI作为运行Flask应用程序的服务器。如果uWSGI可以运行该应用程序,Flask是否仍然需要它?
答案 0 :(得分:4)
Flask不运行应用程序, 应用程序。 uWSGI运行诸如使用Flask创建的应用程序。 Flask不是必需的,但某些应用程序是。
WSGI是PEP 3333中定义的标准,描述了HTTP服务器如何与Python应用程序进行通信。 uWSGI实现了WSGI的服务器端。 Flask是一个用于创建实现WSGI应用程序端的程序的框架。
鉴于WSGI是一个文档化的标准,创建WSGI应用程序不需要Flask。 uWSGI没有实现应用程序端,因此您仍然可以编写与其分离的应用程序并使用uWSGI来提供该应用程序。可以使用任何其他WSGI框架,也可以手动实现。
最基本的WSGI应用程序是一个可调用的,它采用environ
dict和start_response
函数,对dict中的数据起作用,使用status和headers调用start_response
,然后返回响应的主体。例如,uWSGI可以为Flask应用程序提供服务。
def basic_application(environ, start_response):
start_response('200 OK', [('Content-type', 'text/plain')])
return b'Hello, World!'
来自PEP:
这不应被解释为应用程序开发人员将使用WSGI作为Web编程API!假设应用程序开发人员将继续使用现有的高级框架服务来开发他们的应用程序。 WSGI是框架和服务器开发人员的工具,并不打算直接支持应用程序开发人员。
虽然有可能,但不建议这样做。有太多东西(参见PEP)难以正确,并且没有特别有趣或易于实现,需要编写比上述示例更强大的东西。这就是为什么像Flask这样的框架存在的原因。