2

我正在编写一个简单的站点爬虫,我决定借此机会学习 Python 并发编程方面的新知识。我决定尝试其他方法,而不是使用线程和队列,但我不知道什么适合我。

我听说过 Stackless、Celery、Twisted、Tornado 和其他东西。我不想设置数据库和 Celery 的所有其他依赖项,但如果它适合我​​的目的,我会这样做。

我的问题是:我的应用程序的适用性和总体实用性之间的良好平衡是什么?我已经查看了 Stackless 中的 tasklet,但我不确定 urlopen() 调用是否会阻塞或者它们是否会并行执行,我在任何地方都没有看到过。

有人可以给我一些关于我的选择的详细信息以及最好使用什么吗?

谢谢。

4

3 回答 3

4

Tornado 是一个网络服务器,所以它对你编写蜘蛛没有多大帮助。Twisted 更加通用(并且不可避免地复杂),适用于各种网络任务(并且与多个 GUI 框架的事件循环很好地集成)。事实上,曾经有一个 twisted.web.spider(但它在几年前就被删除了,因为它没有被维护——所以你必须在 Twisted 提供的设施之上滚动你自己的)。

于 2010-02-12T03:17:22.770 回答
2

我必须说 Twisted 得到了我的投票。

在 Twisted 中执行事件驱动任务相当简单。与 GTK+ 和 DBus 等其他重要系统组件的集成非常容易。

HTTP 客户端支持目前是基本的,但正在改进 (>9.0.0):请参阅相关问题

额外的好处是 Twisted 在 Ubuntu 默认存储库中可用;-)

于 2010-02-12T01:47:20.117 回答
1

如需快速查看包装尺寸,请参阅 ohloh.net/p/compare
当然,源大小只是一个粗略的指标(我真正想要的是 nr pages doc、nr pages 示例、依赖项),但它可以提供帮助。

于 2010-02-12T15:11:26.600 回答