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

1)运行一个单独的线程

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

3)还有其他方法吗?

使用单独线程的解决方案对我来说很好,但是我想知道是否有更好的方法吗?

请注意,CherryPy不是必需的,我之所以决定使用它,主要是因为该项目看起来很活跃,并且因为它支持多个同时连接(换句话说:我愿意接受替代方案)。

最佳答案

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()

关于python Web服务器和定期任务,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7648416/

10-13 04:38