2009-03-16 3 views
0

J'utilise flup comme serveur fastcgi pour Django.Comment créer une classe singleton avec le serveur Python Flup fastcgi?

S'il vous plaît expliquer à moi comment puis-je utiliser singleton? Je ne suis pas sûr de bien comprendre les modèles de filetage pour Flup.

+0

Quel type de configuration utilisez-vous? Votre serveur fastcgi est-il threadé ou forké? –

+0

Maintenant, j'utilise fastcgi et un seul objet threaded dans le contexte du module, mais je ne suis pas sûr que ce soit correct. Je pense que cela ne fonctionnerait pas pour le serveur forked. Connaissez-vous plus de solution pythonique commune pour ce genre de problème? – maxp

+0

Je recommande un contre en utilisant un singelton dans ce contexte. L'application devrait fonctionner quel que soit le modèle de thread du serveur HTTP - ils devraient être découplés. Pouvez-vous expliquer pour quoi vous avez besoin d'un singleton? –

Répondre

0

Si vous utilisez un serveur forké, vous ne pourrez pas avoir de singleton du tout (du moins pas de singleton qui dure plus longtemps que votre contexte actuel). Avec un serveur threadé, il devrait être possibe (mais je ne suis pas tellement dans les serveurs Django et Web!).

Avez-vous essayé un tel code (comme un module additionnel):

# Singleton module 
_my_singleton = None 

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

Aux points d'arbres (« ... »), vous devez ajouter le codage pour créer votre objet singleton, bien sûr.

Il ne s'agit pas encore d'un code productif, mais vous pouvez l'utiliser pour vérifier si les singletons fonctionneront avec votre framework. Pour les singletons ne sont possibles qu'avec une sorte de "stockage global" à portée de main. Les serveurs fourchus rendent cela plus difficile. Dans le cas où le "stockage global normal" ne fonctionne pas, une autre possibilité est disponible. Vous pouvez stocker votre singleton sur le système de fichiers, en utilisant les facilités de sérialisation Python. Mais bien sûr, ce serait beaucoup plus frais généraux en acte!

Questions connexes