如何使用Python Flup fastcgi服务器制作单例类?

发布于 2024-07-15 07:39:50 字数 90 浏览 10 评论 0原文

我使用 flup 作为 Django 的 fastcgi 服务器。

请向我解释一下如何使用单例? 我不确定我是否理解 Flup 的线程模型。

I use flup as fastcgi server for Django.

Please explain to me how can I use singleton?
I'm not sure I understand threading models for Flup well.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小傻瓜 2024-07-22 07:39:50

如果您使用分叉服务器,您将根本无法拥有单例(至少没有比您的实际上下文寿命更长的单例)。

对于线程服务器,这应该是可能的(但我对 Django 和 Web 服务器不太感兴趣!)。

您是否尝试过这样的代码(作为附加模块):

# Singleton module
_my_singleton = None

def getSingleton():
   if _my_singleton == None:
      _my_singleton = ...
   return _my_singleton

当然,在树点(“...”)处,您必须添加编码来创建单例对象。

这还不是有效的代码,但您可以使用它来检查单例是否适用于您的框架。 对于单例来说,只有手头有某种“全局存储”才有可能。 分叉服务器使这变得更加困难。

在“正常全局存储”不起作用的情况下,还有另一种可能性。 您可以使用 Python 序列化工具将单例存储在文件系统上。 但当然,这实际上会带来更多的开销!

If you use a forked server, you will not be able to have a singleton at all (at least no singleton that lifes longer than your actual context).

With a threaded server, it should be possibe (but I am not so much in Django and Web servers!).

Have you tried such a code (as an additional module):

# Singleton module
_my_singleton = None

def getSingleton():
   if _my_singleton == None:
      _my_singleton = ...
   return _my_singleton

At the tree dots ("...") you have to add coding to create your singleton object, of course.

This is no productive code yet, but you can use it to check if singletons will work at all with your framework. For singletons are only possible with some kind of "global storage" at hand. Forked servers make this more difficult.

In the case, that "normal global storage" does not work, there is a different possibility available. You could store your singleton on the file system, using Pythons serialization facilites. But of course, this would be much more overhead in deed!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文