我的网络服务器必须调用 3-4 个网络服务。我打算在 Node.js 中实现它,但我正在考虑 gevent,因为我不是回调代码的忠实粉丝。我知道绿色线程在行为上与操作系统线程相似,每个线程在调用下一个之前都会等待一个 Web 服务的响应。这个对吗?
例如,如果我正在调用 Web 服务 A、B、C、D,每个需要 1 秒,节点将在 1 秒内完成所有 4 个(由于并行调用),但 gevent 将需要 4 秒(因为它一个接一个地把它们锁起来)。
我的网络服务器必须调用 3-4 个网络服务。我打算在 Node.js 中实现它,但我正在考虑 gevent,因为我不是回调代码的忠实粉丝。我知道绿色线程在行为上与操作系统线程相似,每个线程在调用下一个之前都会等待一个 Web 服务的响应。这个对吗?
例如,如果我正在调用 Web 服务 A、B、C、D,每个需要 1 秒,节点将在 1 秒内完成所有 4 个(由于并行调用),但 gevent 将需要 4 秒(因为它一个接一个地把它们锁起来)。
基本上,gevent 子任务在遇到阻塞操作时会互相让步。我不是节点专家,但我相信这也是节点运行的方式。一个很好的例子在这里: http ://sdiehl.github.io/gevent-tutorial/#synchronous-asynchronous-execution
文档gevent
明确指出多个作业可以同时运行(http://www.gevent.org/intro.html#example)。由于它LibUV
在后台使用并且具有与 类似的主事件泵nodejs
,因此这两种方法将非常相似,但在不同的编程环境和语法中运行。选择你喜欢的任何口味。