龙卷风“错误:[Errno 24]打开的文件太多”错误

龙卷风“错误:[Errno 24]打开的文件太多”错误,第1张

龙卷风“错误:[Errno 24]打开的文件太多”错误

很简单,为每个请求实例化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()


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/4921900.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-12
下一篇2022-11-13

发表评论

登录后才能评论

评论列表(0条)

    保存