在Heroku上,使用Node.js是否可以防止队列工作人员dynos需要第三方API调用?

the page about using worker dynos and background jobs上的Heroku开发中心声明您需要使用工作队列来处理API调用,例如获取RSS源,因为如果服务器速度很慢,操作可能需要一些时间,并且在Web dyno上执行此操作会导致它阻止接收其他请求.

但是,根据我的阅读,在我看来,Node.js的一个主要观点是,由于其基于事件的异步运行时模型,它在这些条件下不会受到阻塞.

我很困惑,因为这不会暗示在网络动态中进行API调用(异步)是可以的吗?也许这些文档是针对同步模型更普遍的Ruby / Python / etc用例编写的?

解决方法

NodeJS是 reactor pattern的实现.NodeJS的认构建使用5个反应器.一旦这5个反应器用于IO绑定任务,主事件循环将被阻止.

关于NodeJS的一个常见误解是它是一个允许你同时做很多事情的系统.这不一定是这种情况,它允许您在等待IO绑定任务时执行其他操作,一次最多5个.

任何cpu绑定任务总是在主事件循环中执行,这意味着它们将被阻塞.

这意味着如果你的“工作”是IO绑定的,比如把东西放在数据库中那么你可能会因为没有使用dynos而逃脱.这当然取决于你计划一次进行多少事情.请记住,您在主应用程序中放置的任何任务都会从其他传入请求中获取资源.

通常不建议用于这样的事情,如果你有一个工作进行一些处理,它属于一个在自己的进程或线程中执行的队列.

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...