首页 > 解决方案 > Tornado PeriodicCallback 将创建一个新的上下文

问题描述

我在 Python Tornado 中遇到了 PeriodicCallback 的一些奇怪行为。

from tornado.ioloop import PeriodicCallback
class MyClass(object):
    def __init__(self):
        self.dict = {}
        PeriodicCallback(self._check_status, 3000).start()
    ...
    def foo(self):
        self.dict["efg"] = 20 
        print (id(self.dict)) # 1st print

    def _check_status(self):
        self.dict["abc"] = 10
        print ( id(self.dict)) # 2nd print

第一个和第二个打印值不同,这意味着 self.dict 是不同的对象,这会导致严重的问题。这是意外行为。怎么了?

我希望 self.dict 在 foo 和 _check_status 中引用同一个对象。我应该怎么办?

标签: pythontornado

解决方案


推荐阅读