【问题标题】:python web server and periodic taskspython web服务器和周期性任务
【发布时间】:2011-10-04 13:09:47
【问题描述】:

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

1) 运行一个单独的线程

2)cherrypy.process.plugins.PerpetualTimer(不知道怎么用,好像很耗资源?)

3) 其他方式?

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

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

【问题讨论】:

    标签: python multithreading webserver cherrypy


    【解决方案1】:

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

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

    my_task_runner = Monitor(cherrypy.engine, my_task, frequency=3)
    my_task_runner.subscribe()
    

    【讨论】:

    • 完美,谢谢!我编辑了您的答案以修复课程包 (cherrypy.process.plugins.Monitor)。另一方面:最后一个参数命名不正确,它应该是“间隔”。再次感谢,正是我的想法!
    猜你喜欢
    • 1970-01-01
    • 2019-05-25
    • 2012-04-01
    • 1970-01-01
    • 2018-11-28
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多