gpt4 book ai didi

python - 在 Python/Pyramid/CherryPy 中处理定期管理任务的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-28 21:54:57 25 4
gpt4 key购买 nike

我有一个 python 网络应用程序,它使用 Pyramid/CherryPy 作为网络服务器。

它有一些需要运行的定期内务处理任务——清除陈旧的 session 、释放它们的资源等……

管理此问题的正确方法是什么?我可以很容易地运行一个额外的“管理”线程(并使用一个单独的调度程序,如 APscheduler ),但是让一个单独的线程进入正在运行的服务器线程似乎是一个非常笨拙的解决方案。 CherryPy 已经在(多线程)事件循环中运行服务器,看起来应该可以通过它以某种方式安排周期性事件。

最佳答案

@fumanchu 的回答让我得到了这个答案,但我最终使用了 cherrypy.process.plugins.BackgroundTask 的一个实例插件:

def doHousekeeping():
print("Housekeeper!")

-

def runServer():


cherrypy.tree.graft(wsgi_server.app, "/")

# Unsubscribe the default server
cherrypy.server.unsubscribe()

# Instantiate a new server object
server = cherrypy._cpserver.Server()

# Configure the server object
server.socket_host = "0.0.0.0"
server.socket_port = 8080
server.thread_pool = 30

# Subscribe this server
server.subscribe()

cherrypy.engine.housekeeper = cherrypy.process.plugins.BackgroundTask(2, doHousekeeping)
cherrypy.engine.housekeeper.start()

# Start the server engine (Option 1 *and* 2)
cherrypy.engine.start()
cherrypy.engine.block()

导致 doHousekeeping() 在 CherryPy 事件循环中以 2 秒的间隔被调用。

它也不涉及像在整个操作系统中拖动只是为了定期调用任务这样愚蠢的事情。

关于python - 在 Python/Pyramid/CherryPy 中处理定期管理任务的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23361597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com