Azure Functions [JavaScript / Node.js] – HTTP调用,良好实践

从我的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的解决方案:https://docs.microsoft.com/en-us/azure/architecture/antipatterns/improper-instantiation/
它使用静态HttpClient类.

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

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

An Agent is responsible for managing connection persistence and reuse
for HTTP clients. It maintains a queue of pending requests for a given
host and port,reusing a single socket connection for each until the
queue is empty,at which time the socket is either destroyed or put
into a pool where it is kept to be used again for requests to the same
host and port. Whether it is destroyed or pooled depends on the
keepAlive option.

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


kindeditor4.x代码高亮功能默认使用的是prettify插件,prettify是Google提供的一款源代码语法高亮着色器,它提供一种简单的形式来着色HTML页面上的程序代码,实现方式如下: 首先在编辑器里面插入javascript代码: 确定后会在编辑器插入这样的代码: <pre
这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代码高亮,因为SyntaxHighlighter的应用非常广泛,所以将kindeditor默认的prettify替换为SyntaxHighlighter代码高亮插件 上一篇“让kindeditor显示高亮代码”中已经
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高
JS对象如何转为json格式字符串
JS怎么获取图片原始宽高
怎么在click事件中调用多个js函数
js如何往数组中添加新元素
js如何拆分字符串
JS怎么对数组内元素进行求和
JS如何判断屏幕大小
js怎么解析json数据
js如何实时获取浏览器窗口大小
原生JS实现别踩白块小游戏(五)
原生JS实现别踩白块小游戏(一)