Использование eventlet с SQLAlchemy

Я использую eventlet для создания простого сканера веб-сайтов, начиная с этого примера. Я хотел бы использовать SQLAlchemy для хранения содержимого веб-страниц и метаданных для дальнейшей обработки. Можно ли использовать SQLAlchemy вместе с eventlet? Кто-нибудь может привести простой пример?

2 ответа

Решение

Извините за поздний ответ.

Это будет зависеть от используемой вами библиотеки подключений к базе данных.

  • Для библиотеки расширений C, как и MySQLdb, в Eventlet есть модуль db_pool, как в примере с OpenStack. По сути, он создает пул потоков ОС для выполнения блокирующих операций с БД. Таким образом, у вас не может быть много параллельных запросов, но, скорее всего, ваша база данных не выдержит их, так что это не проблема.
  • Для чистой библиотеки Python, такой как myconnpy, pg8000, просто позвоните eventlet.monkey_patch(),
  • В особом случае Eventlet поддерживает патчирование обезьян для psycopg2. Это расширение C, но оно достаточно круто для обеспечения перехватов ввода-вывода, так что вы получаете лучшее из обоих миров. Опять же, простой вызов monkey_patch() сделал бы трюк.

Проект OpenStack Compute (Nova) использует SQLAlchemy и eventlet, вас может заинтересовать их подход.

Другие вопросы по тегам