Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从webframework将HTTP路由动态加载到NGINX中?_Python_Http_Web Applications_Nginx_Routing - Fatal编程技术网

Python 如何从webframework将HTTP路由动态加载到NGINX中?

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;

我一直在关注,并注意到许多web框架都受到相同的性能损失,即它们在框架本身内执行HTTP路由,而不是利用NGINX的高性能HTTP服务器执行路由

例如,在python框架中,您可能有:

@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定义的变量,等于查询字符串值),等等。因此,除非有人已经解释了这些用例,否则从头开始是很重要的