【问题标题】:python - daemonize bottlepy scriptpython - 守护bottlepy脚本
【发布时间】:2013-04-25 23:33:24
【问题描述】:

我正在使用 Bootle Python Web 框架在 Ubuntu 上开发 webapps。 有没有什么有效的方法来守护启动默认的bottlepy网络服务器的脚本?

谢谢。

UPD:现在我使用Supervisord 来实现这个目的。

【问题讨论】:

  • 最简单的方法:python app.py & - 在后台运行。 nohup python app.py & - 在后台运行,可以从控制台注销。
  • 我推荐在一个简单的 Nginx 后面使用 uWSGI...

标签: python-3.x daemon bottle


【解决方案1】:

正如 reclosedev 所提到的,nohup ... & 将毫不费力地工作。

您也可以使用daemonize 之类的东西,它比使用nohup 有更多选择。

我个人在开启自动重载的情况下运行以下代码:

while true; do python app.py ; done

如果我写了一些愚蠢的东西,它会重新启动服务器。其他解决方案会因语法错误而强制您重新启动服务器。

部署发生在 apache 或 lighttpd 之后。

【讨论】:

    【解决方案2】:

    在 ubuntu 上,我使用以下步骤:

    1. 记得将模板的完整路径插入bottle.TEMPLATE_PATH
    2. 使脚本可执行 (chmod +x <script_name>)
    3. 制作符号链接到不带 .py 扩展名的脚本
    4. 导航到 /etc/init.d 并将骨架复制到 <script_symlink_name>
    5. 修改新的初始化脚本
      • 将名称更改为<script_symlink_name>
      • 将 DAEMON 更改为 <path_to_script_symlink>
      • 将 DAEMON_ARGS 更改为“”
      • 更改说明
      • do_start() 中将“--background”开关添加到start-stop-daemon(没有“--test”开关的行)
    6. 使初始化脚本可执行
    7. 通过“service <script name> start”测试
    8. 设置自动启动:update-rc.d <script-name> defaults

    【讨论】:

      【解决方案3】:

      您可以使用 supervisord 或 monit 来启动/停止和重新启动应用程序。

      【讨论】: