python web服务器和定期任务

joh*_*odo 5 python webserver multithreading cherrypy

我正在使用CherryPy通过REST API接收请求.除了处理请求之外,应用程序还应该每隔几秒进行一些资源管理.最简单的方法是什么?

1)运行一个单独的线程

2)cherrypy.process.plugins.PerpetualTimer(不知道如何使用它,看起来资源很重?)

3)其他一些方式?

有一个单独的线程的解决方案对我来说很好,但我想知道是否有更好的方法来做到这一点?

请注意,CherryPy不是必需的 - 我决定使用它主要是因为项目看起来很活跃并且因为它支持多个同时连接(换句话说:我对替代方案持开放态度).

fum*_*chu 3

PerpetualTimer 只是 threading._Timer 的重复版本。

您真正想要使用的是cherrypy.process.plugins.Monitor,它只不过是为您运行单独线程的一种方法。您应该使用它,因为它插入到cherrypy.engine 中,该引擎控制CherryPy 服务器的启动和停止行为。如果您运行自己的线程,无论如何您都会希望在 CP 关闭时停止它;Monitor 类已经知道如何做到这一点。它在底层使用 PerpetualTimer,直到最近的版本,它被 BackgroundTask 类取代。

my_task_runner = Monitor(cherrypy.engine, my_task, frequency=3)
my_task_runner.subscribe()
Run Code Online (Sandbox Code Playgroud)