tornado部署

1.为什么要运行多个tornado实例
同步请求时,在应用处理过程中(如数据库查询,磁盘访问),服务器进程不能接受新请求。
所以需要运行多个服务器进程实例。
异步请求时,在应用处理时,服务器进程是非阻塞的,可以接受新请求,因此tornado的非阻塞架构也可以很好地解决这个问题。

2.nginx作反向代理
我们使用nginx作反向代理服务器,nginx会把客户端请求中转到适当的tornado服务器进程。

3.简单的nginx代理配置示例

复制代码
user nginx;
worker_processes 5;

error_log /var/log/nginx/error.log;

pid /var/run/nginx.pid;

events {
    worker_connections 1024;
    use epoll;
}

proxy_next_upstream error;

upstream tornadoes {
    server 127.0.0.1:8000;
    server 127.0.0.1:8001;
    server 127.0.0.1:8002;
    server 127.0.0.1:8003;
}

server {
    listen 80;
    server_name www.example.org *.example.org;

    location /static/ {
        root /var/www/static;
        if ($query_string) {
            expires max;
        }
    }

    location / {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_pass http://tornadoes;
    }
}
复制代码

location /static/:nginx直接提供静态目录的文件,而不再代理请求到tornado
upstream:tornado服务器进程列表
proxy:转发请求的服务器URI
location:nginx反向代理路径

4.Supervisor管理tornado进程
详见supervisor使用详解

原文地址:https://www.cnblogs.com/ExMan/p/10405613.html