Tornado Python作为守护进程

Ama*_*tam 1 python linux daemon nginx tornado

我的代码是用龙卷风编写的,我想让它像apache或nginx一样工作,就是这样

  1. 即使我关闭shell,它也必须继续监听端口.
  2. 它必须在系统重启时自动启动

即使我关闭shell,我也尝试过nohup命令使其工作.有用.但我想知道是否有更清洁的选择?

Ama*_*tam 7

取自这里的官方文档.

概观

大多数Tornado应用程序都是作为单个进程运行的.对于生产而言,这通常意味着外部流程管理和代理的相当直接的组合.以下是一些收集的最佳实践/资源.

发展

调试模式被启用,模板不缓存,应用程序将在开发过程中自动重新启动.但是,如果发生Python语法错误,这将失败.(这可以解决一些额外的代码或在开发中使用Supervisor)

您可能希望从终端多路复用器(如screentmux)运行应用程序,以便更灵活地保持运行并跟踪致命错误.

仪表

生产

通常在生产中,使用前端代理运行多个龙卷风应用程序进程(每个核心至少一个).Tornado开发商bdarnell有一个龙卷风生产骨架,使用Supervisor(流程管理)和nginx(代理)来说明这一点.

流程管理

传统上,Tornado应用程序是单进程的,需要外部进程管理器,但HTTPServer可以运行多个进程.此外,还有一些辅助工具可以帮助管理多个流程.

Daemonizing
  • start-stop-daemon示例 - 如果您运行的是标准Linux系统,这是一个简单的方法来守护您的Tornado应用程序
  • Upstart示例 - Upstart内置于Ubuntu中,可以重新生成崩溃的实例.
龙卷风多进程

如上所述,可以在单个或多个套接字上为多个进程配置 Tornado的HTTPServer.

代理

官方文档包括将nginx作为负载平衡代理运行和提供静态文件的示例.

部署