Python 如何从webframework将HTTP路由动态加载到NGINX中?
我一直在关注,并注意到许多web框架都受到相同的性能损失,即它们在框架本身内执行HTTP路由,而不是利用NGINX的高性能HTTP服务器执行路由 例如,在python框架中,您可能有:Python 如何从webframework将HTTP路由动态加载到NGINX中?,python,http,web-applications,nginx,routing,Python,Http,Web Applications,Nginx,Routing,我一直在关注,并注意到许多web框架都受到相同的性能损失,即它们在框架本身内执行HTTP路由,而不是利用NGINX的高性能HTTP服务器执行路由 例如,在python框架中,您可能有: @app.route('/add', methods=['POST']) def add_entry(): ... 这使得您的应用程序比直接在NGINX config文件中执行更容易遵循,如下所示: server { listen 80; server_name example.com;
@app.route('/add', methods=['POST'])
def add_entry():
...
这使得您的应用程序比直接在NGINX config文件中执行更容易遵循,如下所示:
server {
listen 80;
server_name example.com;
location /add {
... // defer to Flask (python) app
}
问题:如何获得NGINX内置HTTP路由的性能(使用NGINX自己的配置文件定义路由),同时通过在web框架中定义HTTP路由来保持应用程序开发的便捷性
有没有一种方法可以将HTTP路由从您的WEBFRAMEWORK的INSERT\u NAME\u动态加载到NGINX中?我不知道一个现成的库。但编写一个脚本似乎相当容易,它可以从应用程序的路由(例如,在应用程序安装期间)生成一个Nginx配置文件。可以使用Nginx config的“include”命令将此文件包含到服务器的主配置中:
server {
listen 80;
server_name example.com;
include /path/to/application/routes.conf
}
我想,它只需要在生产环境中使用,因为效率很重要。因此,在部署新版本的应用程序期间重新启动Nginx不是问题。有一种方法可以在不重新启动整个服务器的情况下重新加载Nginx配置:请记住,Flask允许指定URL中的哪个HTTP动词(POST、GET等)、正则表达式,以及从查询字符串中检索变量(例如,“/user/”和现在的“username”是Python定义的变量,等于查询字符串值),等等。因此,除非有人已经解释了这些用例,否则从头开始是很重要的