将 eventlet 与 SQLAlchemy 结合使用

发布于 2024-12-02 22:57:26 字数 275 浏览 2 评论 0原文

我正在使用 eventlet此示例。 我想使用 SQLAlchemy 存储网页的内容和元数据以供进一步处理。可以将 SQLAlchemy 与 eventlet 一起使用吗?谁能提供一个简单的例子吗?

I'm using eventlet to build a simple website crawler starting from this example.
I would like to use SQLAlchemy to store web pages' content and metadata for further processing. It's possible to use SQLAlchemy along with eventlet? Could anyone provide a simple example?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夏の忆 2024-12-09 22:57:26

OpenStack Compute (Nova) 项目使用 SQLAlchemy 和 eventlet,您可能对 他们的方法

The OpenStack Compute (Nova) project uses SQLAlchemy and eventlet, you might be interested in their approach.

じ违心 2024-12-09 22:57:26

抱歉回复晚了。

这实际上取决于您使用的数据库连接库。

  • 对于 C 扩展库,如 MySQLdb,Eventlet 有 db_pool 模块,如 OpenStack示例。基本上,它创建一个操作系统线程池来执行阻塞数据库操作。因此,您实际上不可能有很多并行查询,但很可能您的数据库无论如何都无法承受它们,所以这不是问题。
  • 对于纯 Python 库,例如 myconnpy、pg8000,只需调用 eventlet.monkey_patch()
  • 作为一个特例,Eventlet 支持psycopg2 的猴子修补。它是一个 C 扩展,但它足以提供 IO 挂钩,因此您可以两全其美。同样,简单地调用 monkey_patch() 就可以解决问题。

Sorry for late reply.

It would really depend on database connection library you use.

  • For C extension library, like MySQLdb, Eventlet has db_pool module as used in OpenStack example. Basically, it creates a pool of OS threads to execute blocking DB operations. So you can't really have a lot of parallel queries, but most probably your database would not survive them anyway, so that's not an issue.
  • For pure Python library, like myconnpy, pg8000, then just call eventlet.monkey_patch().
  • As a special case, Eventlet supports monkey patching for psycopg2. It is a C extension but it is awesome enough to provide IO hooks, so you get best of both worlds. Again, simple call to monkey_patch() would do the trick.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文