2010-07-18 4 views
1

Je suis à la recherche d'un bon framework pour construire des applications web en python (qui pourrait aussi être python + php). Les applications vont faire des requêtes http (GET/POST) et traiter des données, donc je voudrais avoir un support de thread pour le rendre plus rapide. J'utilise actuellement exec (/ path/to/php thread.php ...); exécuter des "threads" sur php. L'application principale va jeter des tonnes d'urls et il y a d'autres applications comme des "modules" qui analysent les données. Je cherche principalement un framework qui me permette de gérer des threads via une interface web, ces threads exécuteront une requête GET/POST et récupéreront des données qui seront stockées pour une utilisation ultérieure par d'autres applications.Je recherche un bon framework python pour les applications web (avec support de threads)

+5

Le support de filetage semble être une exigence inutile et arbitraire. Codez d'abord l'application, puis profilez pour voir où vous devez optimiser. Dans mon expérience, la plupart du temps, vous pensez que vous avez besoin de filetage, vous ne le faites pas. – rossipedia

+0

J'ai besoin de jeter des tonnes d'urls et d'analyser le texte trouvé, c'est pourquoi j'ai besoin de threads. – jahmax

+1

Vous savez que Python n'exécute qu'un thread à la fois? (Si votre framework utilise des bibliothèques codées dans d'autres langages, il * peut * être capable de faire un meilleur usage des threads.) Voir http://docs.python.org/c-api/init.html#thread-state- and-the-global-interpreter-lock –

Répondre

2

http://github.com/facebook/tornado

Tornado est une version open source du évolutive, serveur web non bloquant et des outils que le pouvoir FriendFeed

+0

+1 Pour Tornado - rarement mentionné. Très bon logiciel. – zebrabox

4

J'utilise Django beaucoup:

http://www.djangoproject.com/

Tout est python et html-templates. Ce n'est pas "multithread", mais vous pouvez configurer votre serveur pour que plusieurs processus traitent les demandes entrantes, de sorte qu'un utilisateur n'en accroche pas d'autres, si c'est ce qui vous inquiète lorsque vous demandez "multi-thread" . Mais c'est une question distincte.

+0

Je veux du multi-threading parce que je vais lancer un bot "pseudo-spider" qui demandera beaucoup d'urls et avoir un seul script qui le fait est aussi lent que l'enfer, aussi je voudrais avoir un moyen facile de gérer l'interface web interagir (modifier les paramètres, start-stop, etc) avec des discussions. – jahmax

+0

Il n'y a pas grand chose à faire pour un vrai multithreading en python. mais vous pouvez faire du bon travail avec le multitraitement. Tant que vous n'avez pas besoin d'intercommunication extrêmement rapide entre eux, il n'y a pas beaucoup de différence. – eruciform

+0

ou si vous avez besoin du processus de création d'un nouveau "thread" pour être léger - puis, aussi, les threads font une grande différence sur les processus. – eruciform

0

Vous voulez vérifier WebOB. Il utilise WSGI, et peut être utilisé avec des serveurs filetés sans problème. Ian Bicking, qui a aidé avec la norme Python WSGI, worte un excellent post, vous devriez vérifier: What does a WebOB application look like?

En outre: Rechercher d'abord!

1

Je voudrais jeter un oeil à gevent. Vous pouvez utiliser des greenlets pour diviser le travail et les différentes classes de synchronisation fournies pour permettre la communication. gevent a aussi un serveur WSGI, donc vous pouvez implémenter votre interface web avec un framework simple comme Flask, web.py, etc.

0

Je travaille sur un projet assez similaire, mais nous ne sommes pas inquiets avec les performances/threads encore. Pour la chose de scrapping/ramper il y a un grand cadre de Python appelé Scrappy.

Comme cela a été dit précédemment, Python ne supporte pas le multi-thread nativement, mais il y a un projet appelé Parallel Python qui semble assez facile à intégrer avec n'importe quoi. Je prévois de l'utiliser si nécessaire.

Pour le frontal, je n'utilise que le bon vieux Django. :)

0

Avez-vous la possibilité de courir sous Jython? Si oui, vous pourriez, par exemple, Construisez votre interface utilisateur Web dans quelque chose de "normal" comme Django/web2py, puis faites passer le traitement pour qu'il s'exécute sous les threads JVM.

Juste une idée ...