使用Eventlet和SQLAlchemy

5
我正在使用eventlet构建一个简单的网站爬虫,起始点是这个示例。我想使用SQLAlchemy存储网页内容和元数据以进行进一步处理。能否在eventlet中使用SQLAlchemy?有没有简单的示例可以提供?
2个回答

8

这应该是被接受的答案。最好的方法是使用eventlet db_pool模块和SQLAlchemy NullPoll。 - Pedro Werneck

5

抱歉回复晚了。

这将取决于您使用的数据库连接库。

  • 对于C扩展库,例如MySQLdb,在db_pool模块中使用了Eventlet,如OpenStack示例。基本上,它创建了一个OS线程池来执行阻塞的DB操作。因此,您无法真正拥有大量并行查询,但最可能您的数据库也无法承受它们,因此这不是一个问题。
  • 对于纯Python库,例如myconnpy、pg8000,则只需调用eventlet.monkey_patch()
  • 作为特殊情况,Eventlet支持psycopg2的monkey patching。它是一个C扩展,但它足够强大,可以提供IO hooks,因此您可以获得两全其美的效果。同样,简单地调用monkey_patch()即可解决问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接