2011-09-03 1 views
3

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

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.

+0

Ceci devrait être la réponse acceptée. La meilleure approche consiste à utiliser le module db_pool d'événement avec SQLAlchemy NullPoll. –