【问题标题】:'failed to create second instance' error in npm themeparks module in Azure FunctionAzure Function 中的 npm themeparks 模块中的“无法创建第二个实例”错误
【发布时间】: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


    【解决方案1】:

    请将代码行const DisneyWait = new Themeparks.Parks.WaltDisneyWorldMagicKingdom();移到module.exports = async function (context, req)之外。

    更新代码应该是这样的:

    const Themeparks = require("themeparks");
    const DisneyWait = new Themeparks.Parks.WaltDisneyWorldMagicKingdom();
    
    module.exports = async function (context, req) {
    
    let myData = "W";
    
    let rides = await DisneyWait.GetWaitTimes();
    
    rides.forEach(ride => {
        myData = myData + "!!!" + ride.name ;
    });
    
    context.bindings.outputBlob = myData;
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-04
      • 1970-01-01
      • 1970-01-01
      • 2019-05-23
      • 1970-01-01
      • 2022-01-11
      • 2013-07-01
      相关资源
      最近更新 更多