在cherrypyart成功快速入门后启动后台进程

gc5*_*gc5 4 python rest subprocess cherrypy

我有一个基于cherrypy构建的REST WebService.该服务与cherrypy.quickstart()呼叫联机.

我希望subprocess.Popen()在服务上线后立即启动后台进程.这个cherrypy.quickstart()电话是封锁的.如何添加回调以启动后台进程?

saa*_*aaj 5

如果您的后台任务很简单且不受CPU限制,我建议您使用cherrypy.process.plugins.BackgroundTask.这是一个基于线程的解决方案.以下是完整示例的答案.

通常在CherryPy中,我们不传递回调来传递内部组件.相反,我们使用插件.CherryPy自己的组件,如会话数据到期或请求超时监视器,守护程序和PID编写器等,都是插件.插件的生命周期绑定到消息总线.FSM图说明了状态变化.在你的插件中,你只需要处理一些对你的任务有意义的状态.

                 O
                 |
                 V
STOPPING --> STOPPED --> EXITING -> X
   A   A         |
   |    \___     |
   |        \    |
   |         V   V
 STARTED <-- STARTING
Run Code Online (Sandbox Code Playgroud)

这个答案有一个插件示例.另请参阅Sylvain Hellegouarch 使用CherryPy巴士管理您的流程.