我正在为MaxMind的GeoIP数据库使用python包装器'geoip2'。在文档中说,你应该只创建数据库阅读器的单个实例,因为打开数据库是非常昂贵的,当然,为每个请求打开它是一个非常糟糕的主意。
所以,如果我的服务器上有Django(1.10)+ Gunicorn,我应该如何创建数据库阅读器的“单例”?这通常不是关于geoip2模块的问题,它的问题是:
我应该如何创建一个可从应用程序访问的单个对象(不是
整个项目)?可以在__init__
:os.environ['APP_VAR_WHATEVER'] = InitObject()
中执行此类操作吗?
不幸的是,我对Gunicorn知之甚少,所以第二个 问题是:工人住了多长时间?是重新启动每个N. 分/秒?我问这个问题,因为我害怕它 经常重生工人,会产生额外的不必要的 系统负载。
答案 0 :(得分:2)
此处http://python-3-patterns-idioms-test.readthedocs.io/en/latest/Singleton.html是Singleton Pattern的有用示例