2017-06-12 4 views
0

Je suis encore un peu nouveau sur Python, et j'ai commencé à apprendre à utiliser le framework Twisted pour pouvoir configurer un serveur web asynchrone. Les détails sur le stockage des informations d'état dans l'objet Session sont assez simples, mais il manque quelque chose dans la documentation qui me dégoûte. La première ligne dans le script sur this tutoriel lit:Python Twisted - Comment utiliser cache() dans un script non-rpy

cache() 
...rest of the script goes here 

C'est quelque chose qui ne fonctionne que dans ce qu'on appelle un script RPY - plus à ce sujet here. Le problème est, je ne veux pas vraiment utiliser un script rpy, et ce n'est pas une exigence. La page que j'ai référencée décrit les scripts rpy comme étant principalement destinés à expérimenter de nouvelles idées ET PAS BEAUCOUP D'AUTRE.

Mon problème est que lorsque je tente d'exécuter une version non RPY de mon script, je reçois cette erreur:

NameError: name 'cache' is not defined 

Des recherches supplémentaires m'a dit que le cache() est une partie des GLOBALS pour chaque script rpy, il n'est donc pas nécessaire d'importer. Cependant, la documentation ne décrit pas comment utiliser cache() dans un fichier non-rpy. Donc, il y a ma question - comment puis-je utiliser cache() dans un fichier non-rpy? Je suis sûr que c'est juste une question de savoir quel module importer, ce que je ne fais pas. Toute aide serait appréciée.

Répondre

0

Une caractéristique distinctive du traitement des scripts rpy par Twisted Web est que le code source est réévalué à chaque requête.

cache est une API spécialement conçue pour les scripts rpy pour indiquer à l'environnement d'exécution et non de réévaluer la source à nouveau. Si cache est appelée, les résultats de l'évaluation de la source sont enregistrés et utilisés pour satisfaire la demande suivante pour cette ressource.

Étant donné que cette fonctionnalité est unique à la gestion des scripts rpy, il n'est pas nécessaire ou utile d'utiliser cache pour définir des ressources pour Twisted Web d'une manière différente.

0

Apparemment, si vous n'utilisez pas un fichier rpy, vous n'avez simplement pas besoin d'utiliser le cache(). J'ai simplement supprimé cette ligne du code et cela semble fonctionner correctement. Toute contribution supplémentaire à ce sujet est toujours appréciée, car la documentation fait défaut.