本文目录一览:
- 1、怎么用 tornado 的 asynchttpclient 异步上传文件
- 2、本地电脑上用tornado搭建好了网站,要怎么发布到网上?
- 3、如何快速有效的安装Python+Nginx+Tornado+Mysql
- 4、用python做web开发,tornado 如何部署,都是用nginx+supervisor吗
- 5、如何使用tornado的日志文件输出
怎么用 tornado 的 asynchttpclient 异步上传文件
private byte doPost(String url, Map postPair) throws ClientProtocolException, IOException, HttpResponseException { HttpPost _httpPost = null; _httpPost = new HttpPost(url); if (postPair != null postPair.size() 0) { List nameValuePairs = new ArrayList(2); try { for (String s : postPair.keySet()) { nameValuePairs.add(new BasicNameValuePair(s, postPair.get(s))); } _httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8")); } catch (UnsupportedEncodingException e) } return getResponse(_httpPost); }
本地电脑上用tornado搭建好了网站,要怎么发布到网上?
第一次回答问题呀, 好紧张!!!
有几个必要的东西: 域名,服务器(我用的阿里ECS).
1. 域名备案指向你的ECS服务器.
2. 在你的服务器安装一些必要的软件: Mysql, Python(适合你的版本), Nginx(做tornado的代理), 3. Supervisord(监控tornado)
4. 使用Supervisord启动你的tornado程序.这里只要看看Supervisord配置方法就会用了.启动多个tornado程序在不同的端口.
例如:
[group:990t]
programs=990t-8000,990t-8001
[program:990t-8000]
command=python3.4 /usr/workspace/990T.CN/run.py --port=8000
directory=/usr/workspace/990T.CN/
user=www
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/supervisor/990T.CN.log
loglevel=info
[program:990t-8001]
command=python3.4 /usr/workspace/990T.CN/run.py --port=8001
directory=/usr/workspace/990T.CN/
user=www
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/supervisor/990T.CN.log
loglevel=info
5. 然后配置Nginx做tornado的代理
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See
# for more information.
include /etc/nginx/conf.d/*.conf;
upstream 990t.cn {
server 127.0.0.1:8001;
server 127.0.0.1:8002;
}
# 990T.CN短链接服务
server {
listen 80;
server_name 990t.cn ;
client_max_body_size 50M;
index index.html index.htm;
if ($host != '990t.cn' ) {
rewrite ^/(.*)$ permanent;
}
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 ;
}
}
6. 上面就是我的挫方法啦, 无意中看到你的提问就回复了. 希望有所帮助!
- 平时做点积累 achais.com
如何快速有效的安装Python+Nginx+Tornado+Mysql
下面我将介绍在UNIX(LINUX、MAC下的配置方法其本一致)下如何快速搭建其运行环境:
1、安装Python
wget http //www python org/ftp/python/2.7.5/Python-2.7.5.tgz tar xvfz Python-2.7.5.tgzcd Python-2.7.5 ./configure-tornadonginx上传文件
make
sudo make install
2、安装Python的包管理工具setuptools、pip和打包工具distribute
wget http //peak telecommunity com/dist/ez_setup.py python ez_setup.py
wget http //python-distribute org/distribute_setup.py python distribute_setup.py
wget https //github com/pypa/pip/raw/master/contrib/get-pip.py python get-pip.py
3、安装Readline
sudo pip install readline
4、安装Mysql
#安装cmake wget http //www cmake org/files/v2.8/cmake-2.8.8.tar.gz
tar xvfz cmake-2.8.8.tar.gz
cd cmake-2.8.8
./configure
make
sudo make install #安装mysql wget http //cdn mysql com/Downloads/MySQL-5.5/mysql-5.5.29.tar.gz
tar xvfz mysql-5.5.29.tar.gz
cd mysql-5.5.29
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/localmysql/data/ -DMYSQL_UNIX_ADDR=/usr/localmysql/data/mysqld.sock -DWITH_INNOBASE_STORAGE_ENGINE=1 -DSYSCONFDIR=/etc -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_unicode_ci -DWITH_DEBUG=0-tornadonginx上传文件
make
sudo make install #下载安装mysql-python wget
tar xvfz MySQL-python-1.2.3.tar.gz
cd MySQL-python-1.2.3 #修改site.py中mysql_config的路径(为mysql安装路径下的/bin/mysql_config), site.py
mysql_config = /usr/local/mysql/bin/mysql_config #更改完进行编译和安装 python setup.py build
sudo python setup.py install #将mysql安装路径下的lib加入到环境变量LD_LIBRARY_PATH中 export LD_LIBRARY_PATH=/usr/local/mysql/lib/:$LD_LIBRARY_PATH-tornadonginx上传文件
5、安装一些Python的常用模块和tornado
pip install tornado
pip install torndb
pip install requests
pip install markdown
6、配置Mysql
groupadd mysql useradd -g mysql mysql chown mysql.mysql -R /service/mysql/ /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf-tornadonginx上传文件
7、安装Nginx
wget tar zxvf nginx-0.8.33.tar.gz
cd nginx-0.8.33 ./configure
make
make install
8、配置nginx,编辑/usr/local/nginx/conf/nginx.conf文件
user nobody;
worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events {-tornadonginx上传文件
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
upstream snail {
server 127.0.0.1:8888;
}
sendfile on; #tcp_nopush on; keepalive_timeout 65;
proxy_read_timeout 200;
tcp_nopush on;
tcp_nodelay on;
gzip on;
gzip_min_length 1000;
gzip_proxied any;
server {
listen 80;
server_name localhost; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html;-tornadonginx上传文件
location = /50x.html {
root html;
}
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host; # proxy_redirect false; proxy_set_header X-Real-IP $remote_addr;-tornadonginx上传文件
proxy_set_header X-Scheme $scheme;
proxy_pass ; }
}
}
9、创建一个项目
vi demo.py
import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello, world")-tornadonginx上传文件
application = tornado.web.Application([
(r"/", MainHandler),
]) if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
10、运行这个项目
#启动项目 nohup python demo.py #重启Nginx /usr/local/nginx/sbin/nginx -s reload
在浏览器中输入 看到页面输出hello word!
转载,仅供参考,祝你愉快,满意请采纳。
用python做web开发,tornado 如何部署,都是用nginx+supervisor吗
因为Tornado是异步的网络框架,性能够好,可以直接放在最外层,但是为了避免阻塞问题,会开多个进程,然后使用 Nginx 做反向代理实现负载均衡。具体可以看这篇文章 Introduction to Tornado 中文翻译。-tornadonginx上传文件
那么这里就涉及到要开多个Tornado进程的问题,使用Supervisor来做这件事是最简单的。Supervisor 的使用方法可以看这篇文章 Python 进程管理工具 Supervisor 使用教程-tornadonginx上传文件
另外,如果你需要部署Django或者 Flask,则推荐 Nginx+Gunicorn+Supervisor
Nginx放在最外层,然后使用Supervisor做进程管理,使用Gunicorn启动Django或者Flask,相较于uwsgi 的方法,简单很多,而且Gunicorn可以让你使用Gevent和Tornado来为你的后端实现异步访问,性能直接飙升。-tornadonginx上传文件
如何使用tornado的日志文件输出
默认用 Tornado 写程序,修改完代码需要将文件上传,然后重启 Supervisord (supervisorctl reload),修改的程序才能生效。但这样比较麻烦,因为需要SSH到服务器进行重启操作。Tornado 自带的调试模式可以让我们轻松不少。-tornadonginx上传文件
开启调试模式也很简单,只需要 import 一个模块即可。
import tornado.autoreload
现在将修改的文件上传之后,不需要再重启,修改的结果就会显示出来了。
另外也可以在 settings 加入 debug选项:
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
settings = {'debug' : True}
define("debug",default=True,help="Debug Mode",type=bool)
def main():
tornado.options.parse_command_line()
application = tornado.web.Application([
(r"/", MainHandler),
(r"/nowamagic/", NowaMagicHandler),
],**settings)
http_server = tornado.httpserver.HTTPServer(application)
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()
Tornado 官方教程上的 settings 是这样的:
settings = {
"cookie_secret": "61oETzKXQAGaYdkL5gEmGeJJFuYh7EQnp2XdTP1o/Vo=",
"login_url": "/login",
"xsrf_cookies": True,
}
application = tornado.web.Application([
(r"/", MainHandler),
(r"/login", LoginHandler),
], **settings)
当然也设置settings字典可以这样:
settings = dict(
cookie_secret= "61oETzKXQAGaYdkL5gEmGeJJFuYh7EQnp2XdTP1o/Vo=",
login_url= "/login",
xsrf_cookies= True,
)
settings可以设置什么?
#设置templates路径:
template_path = os.path.join(os.path.dirname(__file__), "templates")
#设置静态文件解析路径:
static_path = os.path.join(os.path.dirname(__file__), "static"),
#设置防跨站请求攻击:
xsrf_cookies = True,
#默认为False,即不可防御。
#设置登陆路径,未登陆用户在操作时跳转会用到这个参数:
login_url = "/login-do",
#默认为@tornado.web.authenticated
#设置调试模式:
debug = True,
#默认为False,即不是调试模式。
#设置cookie密钥:
cookie_secret = "dskfhisdjklagkfdklag;lkjasdklgjkldsjaklgjkldsfksdklf"
#默认为字符串"secure cookies"
#设置是否自动编码:在2.0以上需要设置此项来兼容您之前的APP
autoescape = None,
#不设置默认为自动编码。
#设置template_loader,可以从独立的路径中导入template:
template_loader=utils.ZipLoader,
#其中utils为自己定义的模块,ZipLoader是tornado.template.BaseLoader的子类。
#设置gzip压缩:
gzip=True
#设置静态路径头部:
static_url_prefix = "/mystatic/",
#默认是"/static/"
#设置静态文件处理类:
static_handler_class = MyStaticFileHandler,
#默认是tornado.web.StaticFileHandler
#设置静态文件的参数:
static_handler_args = { "key1":"value1", "key2":"value2" }
#默认为空字典。
#设置日志处理函数
log_function = your_fun,
# 日志处理函数your_fun,按照自己的意图记录日志。
调试模式的缺点是:只感知.py文件的改变,模版的改变不会加载,有些特殊的错误,比如import的错误,就会直接让服务下线,到时候还得手动重启。还有就是调试模式和 HTTPServer 的多进程模式不兼容。在调试模式下,你必须将 HTTPServer.start 的参数设为不大于 1 的数字。-tornadonginx上传文件