0

在 Twitter 的Finagle,mapflatMap可用于链接多个异步操作。例如,一个简单的网络爬虫可能会做类似的事情,

downloadURL(url)                     // download a web page
  .flatMap(extractProducts)          // extract individual products for sale on it
  .foreach(saveToDatabase)           // save output to a database

我想gevent在 Python 中做一些非常相似的事情,但我不知道该怎么做。Greenlet.link似乎是一个开始,但它不能让我访问Greenlet包含最终结果的内容(据我所知)。

我如何模仿Finagle和操作?mapflatMapgevent.Greenlet

4

1 回答 1

3

gevent 不是为“异步”编程(在此上下文中为堆栈回调)而设计的,而是为并发编程而设计的。

gevent页面上的描述非常清楚:

gevent 是一个基于协程的 Python 网络库,它使用 greenlet 在 libevent 事件循环之上提供高级同步 API。

您正在寻找的是twisted(但请注意,这不是最“对初学者友好”的框架)。

于 2013-10-29T21:40:21.633 回答