之前学习了阻塞型的django
,现在学习异步的Tornado
。
introduction to Torando中文翻译书
tornado 6.1.dev1 中文文档
tornado 6.03英文文档
用peewee
实现ORM
,而且也支持Model--->tables
,peewee-async
实现异步的数据库查询.用Peewee Migrate来实现migration
peewee_migrate例子参考文章
pip install --pre peewee-async
pip install peewee-async 使用的是peewee2.10的版本
tornado的部署(Supervisor+nginx)
参考部署链接
nginx
在con.f/下配置tornado.conf
如果是ubuntu的nginx,先把/etc/nginx/nginx.conf
的include /etc/nginx/sites-enabled/*
注释掉,或者是在该目录下写配置文件。nginx端口冲突了也不报错。
upstream tornadoes{
server 127.0.0.1:8003;
server 127.0.0.1:8001;
server 127.0.0.1:8002;
server 127.0.0.1:8004;
}
proxy_next_upstream error;
server {
listen 80; # 一般是 80
server_name www.xzh.*;
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;
# 把请求方向代理传给tornado服务器,负载均衡
proxy_pass http://tornadoes;
}
location /static/ {
root /home/perfectman/PycharmProjects/first_tornado/static;
if ($query_string){
expires max;
}
}
}
这个配置文件最重要的部分是upstream指令和服务器配置中的proxy指令。Nginx服务器在80端口监听连接,然后分配这种请求给upstream服务器组中列出的Tornado实例。proxy_pass指令指定接收转发请求的服务器URI。你可以在proxy_pass URI中的主机部分引用upstream服务器组的名字。
安装Supervisor
pip install supervisor
在/etc/下新建文件夹supervisor,
cd /etc/supervisor/
echo_supervisord_conf > supervisord.conf # 导出配置信息模板。
vim supervisord.conf
把最后两行的改成
[include]
files = /etc/supervisor/conf.d/*.conf
注意原来前面的;注释
mkdir conf.d # 仿造nginx配置结构
cd conf.d
vim tornado.conf # 新建一个我们配置的文件
[group:tornadoes]
programs=tornado-8004,tornado-8001,tornado-8002,tornado-8003
[program:tornado-8004]
command=/home/perfectman/PycharmProjects/first_tornado/venv/bin/python3 /home/perfectman/PycharmProjects/first_tornado/shop_cart2.py --port=8004
directory=/home/perfectman/PycharmProjects/first_tornado
user=root
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/tornado.log
loglevel=info
[program:tornado-8001]
command=/home/perfectman/PycharmProjects/first_tornado/venv/bin/python3 /home/perfectman/PycharmProjects/first_tornado/shop_cart2.py --port=8001
directory=/home/perfectman/PycharmProjects/first_tornado
user=root
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/tornado.log
loglevel=info
[program:tornado-8002]
command=/home/perfectman/PycharmProjects/first_tornado/venv/bin/python3 /home/perfectman/PycharmProjects/first_tornado/shop_cart2.py --port=8002
directory=/home/perfectman/PycharmProjects/first_tornado
user=root
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/tornado.log
loglevel=info
[program:tornado-8003]
command=/home/perfectman/PycharmProjects/first_tornado/venv/bin/python3 /home/perfectman/PycharmProjects/first_tornado/shop_cart2.py --port=8003
directory=/home/perfectman/PycharmProjects/first_tornado
user=root
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/tornado.log
loglevel=info
启动
sudo supervisord -c /etc/supervisor/supervisord.conf
进入sudo supervisorctl
status、stop、reload、start tornadoes:*