J'utilise eventlet pour créer un moteur de recherche de site Web simple à partir de this example. Je souhaite utiliser SQLAlchemy pour stocker le contenu et les métadonnées des pages Web en vue d'un traitement ultérieur. Il est possible d'utiliser SQLAlchemy avec eventlet? Quelqu'un pourrait-il fournir un exemple simple?Utilisation d'un événementlet avec SQLAlchemy
3
A
Répondre
3
Désolé pour la réponse tardive.
Cela dépend vraiment de la bibliothèque de connexion à la base de données que vous utilisez.
- Pour bibliothèque C d'extension, comme MySQLdb, eventlet a le module db_pool tel qu'il est utilisé dans OpenStack example. Fondamentalement, il crée un pool de threads OS pour exécuter des opérations de blocage de DB. Donc, vous ne pouvez pas vraiment avoir beaucoup de requêtes parallèles, mais très probablement votre base de données ne leur survivrait pas de toute façon, donc ce n'est pas un problème. Pour une bibliothèque Python pure, comme myconnpy, pg8000, appelez simplement
eventlet.monkey_patch()
. - Dans un cas particulier, Eventlet prend en charge la correction de singe pour psycopg2. C'est une extension en C mais c'est assez génial pour fournir des hooks IO, donc vous obtenez le meilleur des deux mondes. Encore une fois, appel simple à
monkey_patch()
ferait l'affaire.
6
Le projet OpenStackCompute (Nova) utilise SQLAlchemy et eventlet, vous pourriez être intéressé par their approach.
Questions connexes
- 1. utilisation entité sqlalchemy isolately
- 2. Utilisation de Python ORM SQLAlchemy et Django
- 3. Utilisation de "aliasé" dans SQLAlchemy ORM
- 4. Caractères enchâssés avec SQLAlchemy
- 5. insertion avec SQLAlchemy
- 6. mysql compress() avec sqlalchemy
- 7. Unicode Problème avec SQLAlchemy
- 8. column_property dynamique avec SQLAlchemy
- 9. Bouteille avec SQLAlchemy sur Heroku
- 10. SQLalchemy avec la classe imbriquée
- 11. Python avec sqlalchemy db retrival
- 12. Sélection par lots avec SQLAlchemy
- 13. SQLAlchemy avec PostgreSQL Unicode problème
- 14. SQLAlchemy Mauvaise utilisation provoquant une fuite de mémoire?
- 15. Utilisation de tuples de valeurs dans la collection mappée sqlalchemy
- 16. Strange ClassNotMappedError avec sqlalchemy et Python
- 17. pagination sqlalchemy
- 18. SQLAlchemy - Utilisation de 'aliased' dans une requête avec une relation primaryjoin personnalisée
- 19. Requête SQLAlchemy
- 20. Relations SQLAlchemy
- 21. SQLAlchemy IntegrityError
- 22. SQLAlchemy Recursion
- 23. Obtenir la dernière id insert avec SQLAlchemy
- 24. comment utiliser dateadd dans sqlalchemy avec filtre?
- 25. Champs de texte multilingues avec SQLAlchemy
- 26. SQLAlchemy: filter_by avec comme() sur l'attribut étranger
- 27. SQLAlchemy - Combiner requête textuelle avec un filtre
- 28. requête sensible à la casse avec sqlalchemy
- 29. SQLAlchemy et l'héritage polymorphes avec backrefs
- 30. Comment faire un upsert avec SqlAlchemy?
Ceci devrait être la réponse acceptée. La meilleure approche consiste à utiliser le module db_pool d'événement avec SQLAlchemy NullPoll. –