我使用 Flup 作为 Django 的 fastcgi 服务器。
请向我解释如何使用单例?我不确定我是否理解 Flup 的线程模型。
如果您使用分叉服务器,您将根本无法拥有单例(至少没有比您的实际上下文寿命更长的单例)。
使用线程服务器,它应该是可能的(但我不太喜欢 Django 和 Web 服务器!)。
您是否尝试过这样的代码(作为附加模块):
# Singleton module
_my_singleton = None
def getSingleton():
if _my_singleton == None:
_my_singleton = ...
return _my_singleton
当然,在树点(“...”)处,您必须添加编码来创建单例对象。
这还不是生产性代码,但是您可以使用它来检查单例是否可以与您的框架一起使用。因为单例只有在手头有某种“全局存储”的情况下才有可能。分叉的服务器使这变得更加困难。
如果“正常的全局存储”不起作用,则有另一种可能性。您可以使用 Python 的序列化工具将您的单例存储在文件系统上。但是,当然,这实际上会增加更多开销!