我使用cherrypy构建Web服务。我遇到了BackgroundTaskQueue插件,我想用它来处理单独线程上特定的耗时操作。
文档说明用法应如下所示:
import cherrypy
from complicated_logging import log
bgtask = BackgroundTaskQueue(cherrypy.engine)
bgtask.subscribe()
class Root(object):
def index(self):
bgtask.put(log, "index was called", ip=cherrypy.request.remote.ip))
return "Hello, world!"
index.exposed = True
但是,恕我直言,使用像这样的bgtask对象并不是很优雅。我希望其他python模块的处理程序也能使用这个对象。
有没有办法订阅此插件一次,然后"分享"其他处理程序中的bgtask对象(例如,将其保存在cherrypy.request
中)?
这是怎么做到的?这是否需要编写一个樱桃工具?
答案 0 :(得分:0)
放置
queue = BackgroundTaskQueue(cherrypy.engine)
在一个名为的单独文件中,例如 tasks.py 。这样您就可以创建模块任务。 现在您可以在其他模块中“导入任务”,队列是单个实例
例如,在名为 test.py 的文件中:
import tasks
def test(): print('works!')
tasks.queue.put(log, test)