![龙卷风“错误:[Errno 24]打开的文件太多”错误,第1张 龙卷风“错误:[Errno 24]打开的文件太多”错误,第1张](/aiimages/%E9%BE%99%E5%8D%B7%E9%A3%8E%E2%80%9C%E9%94%99%E8%AF%AF%EF%BC%9A%5BErrno+24%5D%E6%89%93%E5%BC%80%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%AA%E5%A4%9A%E2%80%9D%E9%94%99%E8%AF%AF.png)
很简单,为每个请求实例化RequestHandler对象。这意味着您要保存的缓存对象位于RequestHandler(例如,expand)对象上。
如果要向dbmongo(…)函数添加一个简单的“ print’CREATED!’”,您会看到它是在每个GET请求中创建的。
您需要做的是将处理程序附加到类对象,或者根据需要附加“全局”,尽管最好的情况是将其放在Tornado Application对象上。
简单:
class setup(tornado.web.RequestHandler): @classmethod def dbmongo(cls): if not hasattr(cls, '_dbmongo'): cls._dbmongo = apymongo.Connection("127.0.0.1", 27017) return cls._dbmongo第二种方法是使其在文件中成为全局文件:
dbmongo_connection = Nonedef dbmongo(): if not dbmongo_connection: dbmongo_connection = apymongo.Connection("127.0.0.1", 27017) return dbmongo_connection两者都有相同的问题,即如果您有很多想要使用数据库连接的类,则很难共享它。由于数据库是一个共享实体,因此您可能希望为整个应用程序使用一个实体。
class MongoMixin(object): def mongodb(self): if not hasattr(self.application, 'mongodb'): self.application.mongodb = apymongo.Connection(self.application.settings.get("mongohost", "127.0.0.1"), 27017) return self.application.mongodbclass expand(tornado.web.RequestHandler, MongoMixin): def get(self): db = self.mongodb()欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)