显然需要提供class
定义而不是实例,这会导致非常困难的问题。我有两个不同的类,其中一个需要引用另一个
app = tornado.web.Application([
(r"/fusion.*", FusionListener),
(r"/admin.*", AdminListener),
])
。AdminListener
需要对FusionListener的引用,因为需要管理内部项。在这里发送消息是一个不可接受的额外复杂性。目前的机制似乎不具备这种可能性
什么样的模式可以绕过龙卷风的这个缺点
Tags:
将此作为答案发布,以便从正确的代码格式中获益。
我用于跟踪RequestHandler的现有实例的范例非常简单:
当然,您可能需要更改添加/放弃元素的时间。
根据您将来希望引用现有实例的方式(例如通过某个键),您可以使用
dict
来跟踪它们我不认为您可以使用弱引用(如weakref模块中的类),因为这些引用只跟踪活动的实例,而这些实例与创建和销毁请求处理程序实例的方式不兼容
对于我的用例,有持久状态和内存状态。对于前者,我们有
spark
和postgres
存储库。对于后者,我已经设计并编写了具有实例级数据结构的应用程序。但是我已经收集到Tornado
启动的RequestHandler
/WebHandler
子类上的实例属性不是持久的后者希望生活在一个管理状态的类中:但由于这种设计,我不得不显著地重新划定边界。相反,有必要将所有内容都推到全局变量。很少有人会说这是一种更受欢迎的设计。我一有时间就把
tornado
扔了不确定会有什么替代方案:我已经从
cherrypy
恢复了,因为它本身有很大的局限性:下面是我关于它的几个问题我带着一些伤疤通过了,但仍然完好无损。还有其他一些问题让我大吃一惊:
url's
没有得到服务,打鼹鼠的行动也没有明确的结束。它通常也没有得到太多的关注,并且有令人困惑的过时或不完整的文档。这里有大量的文档,这就是为什么我开始写它的原因:但是这些漏洞会造成一系列追逐兔子的情节Flask
和django
有自己的问题。在python
中找到一个功能足够但不是超重型的web服务器似乎是一个虚幻的目标。目前还不确定哪一个框架的问题最少相关问题 更多 >
编程相关推荐