最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Azure Functions [JavaScriptNode.js]

运维笔记admin11浏览0评论

Azure Functions [JavaScript / Node.js]

Azure Functions [JavaScript / Node.js]

从我的Azure函数(在Node.js中运行,由EventHub消息触发)我想向一些外部页面发布一个帖子请求。就像是:

module.exports = function (context, eventHubMessages) {

var http = require("http");

context.log('JavaScript Function triggered by eventHub messages ');

http.request(post_options, function(res){
    ...
})

context.done();

上面的代码可能会有效,但我怀疑这不是反模式。

想象一下在短时间内触发了数千个函数的情况 - 对于每次执行,我们需要创建一个HTTP客户端并创建一个连接......

通过简短的研究,我找到了一些C#Azure Functions的解决方案:使用静态HttpClient类的/。

我有一个问题,Node.js Azure功能中是否有类似的方法?或者任何其他方法来避免这个问题,在Node.js Azure Function执行之间共享一个对象?

回答如下:

如果在短时间内触发了数千个函数,则应通过修改http.globalAgent或传递新的Agent实例来限制套接字

代理负责管理HTTP客户端的连接持久性和重用。它为给定的主机和端口维护一个待处理请求队列,为每个队列连接重新使用单个套接字连接,直到队列为空,此时套接字被销毁或放入池中,以便再次用于请求到同一个主机和端口。它是被销毁还是合并取决于keepAlive选项。

资料来源:https://nodejs/api/http.html#http_class_http_agent

http.globalAgent.maxSockets默认为无穷大,所以除非你限制这个值,你的函数将用完套接字,你会看到你的请求开始失败。此外,如果您计划连接到同一主机,则应在globalAgent/Agent上启用keep-alive以启用池化连接。

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论