【发布时间】:2010-02-12 01:43:11
【问题描述】:
我正在编写一个简单的站点爬虫,我决定借此机会学习 Python 并发编程方面的新知识。我决定尝试其他方法,而不是使用线程和队列,但我不知道哪种方法适合我。
我听说过 Stackless、Celery、Twisted、Tornado 和其他东西。我不想设置数据库和 Celery 的所有其他依赖项,但如果它适合我的目的,我会这样做。
我的问题是:我的应用程序的适用性和总体实用性之间的良好平衡是什么?我已经查看了 Stackless 中的 tasklet,但我不确定 urlopen() 调用是否会阻塞或者它们是否会并行执行,我还没有看到任何地方提到过。
谁能给我一些关于我的选择的详细信息以及最好使用什么?
谢谢。
【问题讨论】:
-
celery 不需要数据库,但它需要 RabbitMQ(Django ORM 支持的数据库)或 Redis。 RabbitMQ 是首选选项。虽然 celery 对分布式计算绝对有用,但它的主要目的是为网站排队异步任务。你可以在你的程序中使用 celery 作为一个选项,如果启用它会增加并行化。或者,如果您有大量数据要分析,也许您应该研究一下 Hadoop?
标签: python multithreading concurrency parallel-processing python-stackless