2009-09-19 16 views
0

J'ai utilisé PyAMF pour écrire un backend pour une application flexible qui demandera différents groupes de centaines d'images différentes en fonction des besoins du client. J'ai utilisé le serveur WSGI "simple_server" fourni par PyAMF lors du développement du code flexible. Maintenant, je suis prêt à écrire un backend robuste qui sera capable de tirer des images à partir d'une base de données mySQL et de les envoyer aussi vite que possible et aussi efficacement que possible à de nombreux clients simultanés.PyAMF choix de backend!

La documentation PyAMF est excellente car elle fournit de nombreux exemples à suivre, mais je ne comprends pas très bien le type de backend que j'essaie de créer. Est-ce que je veux un SocketServer ou un serveur WSGI ou quelque chose comme Twisted ou web2py ou Tornado? Sont-ils même tous différents? :) Devrais-je utiliser des modules Apache à la place (mod_wsgi ou modjy ou mod_python)?

Je me rends compte que cela touche probablement à de nombreux débats ouverts, alors peut-être pourriez-vous me montrer de bons résumés de ces débats?

C'est génial d'avoir autant d'options, mais comment puis-je choisir?

Répondre

0

La réponse courte est, bien sûr, que cela dépend des exigences de votre projet. Combien de connexions simultanées est "beaucoup"? Combien de temps de programmation pouvez-vous lancer sur le problème? Combien de matériel pouvez-vous jeter au problème? ... etc ...

Si vous prévoyez d'avoir beaucoup de clients simultanés, il est difficile de battre Twisted dans le monde Python. Cependant, vous devrez traiter votre base de données de manière asynchrone pour éviter le blocage, et selon la complexité de vos interactions avec la base de données, cela peut être un peu pénible. Vous êtes essentiellement limité à utiliser twisted.enterprise.adbapi ou à créer votre propre intégration ORM torsadée. Si vous préférez avoir un code de base de données «facile» (c'est-à-dire que vous voulez utiliser un ORM), il vaut mieux utiliser un projet (TurboGears/Pylons/plain wsgi), probablement hébergé avec Apache et mod_wsgi. Cela peut être une solution assez évolutive, et vous obtenez beaucoup de choses gratuitement en utilisant ces frameworks, mais cela peut être plus que nécessaire. J'éviterais d'utiliser l'un des nombreux serveurs de base de données python (wsgiref, paster, etc.) en production si vous voulez vraiment de hautes performances.

Bonne chance!