【发布时间】:2020-12-15 11:11:22
【问题描述】:
我正在尝试使用 npm 包主题公园来提取数据库的信息。我想每半小时打电话给主题公园。
也许有使用主题公园经验的人可以帮助我。
当我使用主题公园测试 Azure 功能时,出现此错误。
2020-12-13T22:20:14.430 [错误] 执行“Functions.HttpTrigger3”(失败,Id=59ad2b28-6c19-4655-9edb-16b407b949af,持续时间=4ms)结果:FailureException:错误:无法创建第二个“WaltDisneyWorldMagicKingdom”对象的实例。请仅创建每个位置的一个实例并重新使用它。堆栈:错误:无法创建“WaltDisneyWorldMagicKingdom”对象的第二个实例。请仅创建每个位置的一个实例并重新使用它。在新位置 (C:\home\node_modules\themeparks\lib\location.js:77:13) 在新公园 (C:\home\node_modules\themeparks\lib\park.js:57:5) 在新 HostedPark ( C:\home\node_modules\themeparks\lib\hostedPark.js:7:5) at new WaltDisneyWorldMagicKingdom (C:\home\node_modules\themeparks\lib\disney\waltdisneyworldmagickingdom.js:21:5) at module.exports (C :\home\site\wwwroot\HttpTrigger3\index.js:6:20)at WorkerChannel.invocationRequest (C:\Program Files (x86)\SiteExtensions\Functions\3.0.15185\workers\node\worker-bundle.js: 18546:26) 在 ClientDuplexStream。 (C:\Program Files (x86)\SiteExtensions\Functions\3.0.15185\workers\node\worker-bundle.js:18343:30) 在 ClientDuplexStream.emit (events.js:315:20) 在 addChunk (_stream_readable. js:295:12) at readableAddChunk (_stream_readable.js:271:9)
该消息表明我在之前的 Azure 函数执行中创建了一个主题公园模块的实例,但没有释放它。如果有问题,我想知道如何及时释放对象。
关于这个问题的一些背景。当我从 Azure 门户测试运行该函数时,它第一次运行干净,第二次运行该函数时我收到消息。当我等待 15 分钟左右从门户重新运行该功能时,我没有收到错误消息。但是即使我收到错误,文件也会写入 Azure 存储。如果我从 Azure 逻辑应用程序运行该函数,我会收到内部服务器错误并且不会写入文件。
这是我用来重现问题的代码。它基于 npm 文档中包含的示例代码。
module.exports = async function (context, req) {
const Themeparks = require("themeparks");
let myData = "W";
const DisneyWait = new Themeparks.Parks.WaltDisneyWorldMagicKingdom();
let rides = await DisneyWait.GetWaitTimes();
rides.forEach(ride => {
myData = myData + "!!!" + ride.name ;
});
context.bindings.outputBlob = myData;
}
感谢任何帮助我了解主题公园如何运作的方法。我想尊重 api 编写者的建议,通过仅创建一个实例来节省资源。如果有一种方法可以创建对象并使其可用于将来的执行,那也会很有帮助。如果任何主题公园用户对在计时器上运行主题公园有其他建议,我很想听听您的经验。我是 Javascript 和 Azure Functions 的新手,所以我在尝试让主题公园正常工作时可能会犯一些非常基本的错误。
谢谢。
【问题讨论】:
标签: javascript azure