Python 类/单例与 Django 和 Gunicorn 交互

Raw*_*awr 1 python django singleton gunicorn

使用此问题中的方法 1 实现了单例:

def singleton(class_):
  instances = {}
  def getinstance(*args, **kwargs):
    if class_ not in instances:
        instances[class_] = class_(*args, **kwargs)
    return instances[class_]
  return getinstance

@singleton
class MyClass(BaseClass):
  pass
Run Code Online (Sandbox Code Playgroud)

当我在本地运行它时,它在本地工作,但是当我使用gunicorn和django-crontabs部署它时,它看起来好像单例无法维持并且该类的多个实例被实例化。我想知道每个 Gunicorn 工作人员是否都会生成该类的一个单独实例。简而言之,我询问的是使用 Gunicorn 运行 Web 应用程序时与 Python 和 Django 的交互。

Dan*_*man 5

是的,每个进程都有自己的内存空间,因此也有自己的实例。如果需要共享数据,则应该使用数据库或缓存。