Как создать одноэлементный класс на сервере Python Flup fastcgi? - PullRequest
0 голосов
/ 16 марта 2009

Я использую Flup в качестве сервера fastcgi для Django.

Пожалуйста, объясните мне, как я могу использовать синглтон? Я не уверен, что хорошо понимаю модели потоков для Flup.

1 Ответ

0 голосов
/ 12 июня 2009

Если вы используете раздвоенный сервер, вы не сможете иметь синглтон вообще (по крайней мере, синглтон, который не дольше, чем ваш фактический контекст).

Для многопоточного сервера это должно быть возможно (но я не так уж много на Django и веб-серверах!).

Вы пробовали такой код (как дополнительный модуль):

# Singleton module
_my_singleton = None

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

В точках дерева ("...") вы, конечно, должны добавить кодирование для создания вашего одиночного объекта.

Это еще не продуктивный код, но вы можете использовать его, чтобы проверить, будут ли синглеты работать вообще с вашей средой. Для синглетонов возможно только с неким «глобальным хранилищем» под рукой. Разветвленные серверы делают это более сложным.

В случае, если «обычное глобальное хранилище» не работает, возможна другая возможность. Вы можете сохранить свой синглтон в файловой системе, используя возможности сериализации Pythons. Но, конечно, это было бы намного труднее!

...