擅长:python、mysql、java
<p>将此作为答案发布,以便从正确的代码格式中获益。<br/>
我用于跟踪RequestHandler的现有实例的范例非常简单:</p>
<pre class="lang-py prettyprint-override"><code>class MyHandler(RequestHandler):
_instances = set()
def get(self):
if needs_to_be_added(self.request): # some conditions can be used here
if len(MyHandler._instances) > THRESHOLD: # careful with memory usage
return self.finish("some_error")
MyHandler._instances.add(self)
...
def post(self):
if needs_to_be_removed(self.request):
MyHandler._instances.discard(self)
...
</code></pre>
<p>当然,您可能需要更改添加/放弃元素的时间。<br/>
根据您将来希望引用现有实例的方式(例如通过某个键),您可以使用<code>dict</code>来跟踪它们</p>
<p>我不认为您可以使用弱引用(如<a href="https://docs.python.org/3/library/weakref.html" rel="nofollow noreferrer">weakref</a>模块中的类),因为这些引用只跟踪<strong>活动的<strong>实例,而这些实例与创建和销毁请求处理程序实例的方式不兼容</p>