【问题标题】:How to shutdown CherryPy如何关闭 CherryPy
【发布时间】:2014-10-31 00:50:45
【问题描述】:

我创建了以下函数来关闭cherrypy

import cherrypy
cherrypy.engine.exit()

文件名:shutdown.py。然后我在命令行中输入命令python shutdown.py。出现以下消息:

[06/Sep/2014:11:28:22] ENGINE Bus STOPPING
[06/Sep/2014:11:28:22] ENGINE HTTP Server None already shut down
[06/Sep/2014:11:28:22] ENGINE No thread running for None.
[06/Sep/2014:11:28:22] ENGINE No thread running for None.
[06/Sep/2014:11:28:22] ENGINE Bus STOPPED
[06/Sep/2014:11:28:22] ENGINE Bus EXITING
[06/Sep/2014:11:28:22] ENGINE Bus EXITED

但是,CherryPy 仍在运行。那么如何关闭 CherryPy?

另外,如果我同时运行多个cherrypy 服务器怎么办? shutdown.py 会杀死所有的人吗?

【问题讨论】:

  • 您正在运行哪个操作系统?您需要使用信号来杀死另一个进程。没有全局cherrypy服务器。
  • 操作系统:ubuntu 14.04 LTS。

标签: cherrypy


【解决方案1】:

CherryPy 应用程序包含在普通的 Python 进程中。要将 CherryPy 应用程序视为服务器(例如 mysql、nginx 等,您可以 /etc/init.d/mysql stop),您应该相应地部署它。

对于临时案例,只需告诉cherryd 使用--pidfile 保存pid 文件或将PIDFile plugin 直接集成到您的代码中。然后只需kill `cat /path/to/pidfile`

如需全面部署,请阅读 this answer

【讨论】:

  • 谢谢,但我使用server.py 来启动本教程提供的cherrypy (digitalocean.com/community/tutorials/…)。如何获取cherrypy的进程id?
  • 我已经告诉过你——使用 PIDFile 插件。类似plugins.PIDFile(engine, '/run/yourapp/yourapp.pid').subscribe()。查看cherryd source 的上下文。
【解决方案2】:

这个问题是 6 年前的问题,但我想回答一些重要的问题。关闭 Cherrypy 服务器的最佳方法是在您的代码中设置以下配置:

cherrypy.config.update({ 'server.shutdown_timeout': 1 })

通过这种方式,您可以确定服务器已关闭,您可以在此issue 中查看更多相关信息。所以,我希望这可以帮助别人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多