我的代码是用龙卷风编写的,我希望它的工作方式与apache或nginx非常相似,即
即使关闭shell,我也尝试过nohup命令使其工作。有用。但我想知道是否有更清洁的选择?
答案 0 :(得分:7)
取自官方文件here。
大多数Tornado应用程序都是作为单个进程运行的。对于生产而言,这通常意味着外部流程管理和代理的相当直接的组合。以下是一些收集的最佳实践/资源。
启用debug mode后,模板不会被缓存,应用程序会在开发过程中自动重启。但是,如果发生Python语法错误,这将失败。 (这可以解决w /某些additional code或在开发中使用Supervisor
您可能希望从screen或tmux等终端多路复用器运行您的应用,以便更灵活地保持正常运行并追踪致命错误。
通常在生产中,使用前端代理运行多个龙卷风应用程序进程(每个核心至少一个)。 Tornado开发人员bdarnell有tornado-production-skeleton使用Supervisor(流程管理)和nginx(代理)来说明这一点。
传统上,Tornado应用程序是单进程的,需要外部进程管理器,但HTTPServer can be run with multiple processes。此外,还有一些additional helpers用于帮助管理多个流程。
监如上所述,Tornado的HTTPServer can be configured用于单个或多个套接字上的多个进程。
官方文档包含example for running nginx作为负载平衡代理和服务静态文件。
答案 1 :(得分:2)
简而言之:使用supervisord
和/或nginx
。
点击此链接:http://blog.thisisfeifan.com/2012/06/deploy-tornado-application.html
答案 2 :(得分:2)
我使用的是Python 3,而supervisord目前还不支持python3。 我的解决方案是原生的
创建一个新文件为" my_tornado_app.service" on" / etc / systemd / system /"
和内容
[Unit]
Description=MyTornadoApp1.0
[Service]
ExecStart=/usr/bin/python3 /var/vhosts/mytornado-app/app.py
User=www-data
Restart=on-failure
[Install]
WantedBy=multi-user.target
现在:
sudo systemctl daemon-reload
sudo systemctl enable my_tornado_app.service.service
sudo systemctl start my_tornado_app.service.service
工作!