- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Azure 函数开发聊天机器人。我想从文件加载聊天机器人的一些对话。我正在寻找一种在函数应用程序通过某些函数回调启动之前加载这些对话数据的方法。有没有办法在函数应用程序启动时仅加载一次对话数据?
这个问题实际上是 Azure Function run code on startup 的重复问题。但是这个问题是针对 C# 提出的,我想要一种方法在 NodeJS 中做同样的事情
最佳答案
经过一周的折腾,我得到了一个可行的解决方案。
首先一些背景:手头的问题是,为 Node JS Azure Functions 运行自定义代码@App Start。该问题目前正在讨论中here已经开业快 5 年了,而且似乎没有去任何地方。
到目前为止,Azure Functions 有一个“预热”触发器功能,可在此处找到 AZ Funcs Warm Up Trigger 。然而,此触发器仅按比例运行。因此,您的应用程序的第一个初始实例将不会运行“预热”代码。
解决方案:
我创建了一个 start.js
文件并在其中放入以下代码
const ErrorHandler = require('./Classes/ErrorHandler');
const Validator = require('./Classes/Validator');
const delay = require('delay');
let flag = false;
module.exports = async () =>
{
console.log('Initializing Globals')
global.ErrorHandler = ErrorHandler;
global.Validator = Validator;
//this is just to test if it will work with async funcs
const wait = await delay(5000)
//add additional logic...
//await db.connect(); etc // initialize a db connection
console.log('Done Waiting')
}
要运行此代码,我只需要做
require('../start')();
在我的任何函数中。只要有一个功能就可以了。由于在部署代码时会加载所有函数依赖项,因此只要此行位于其中一个函数中,start.js
将运行并初始化所有全局/单例变量或您希望它在 func 启动时执行的任何其他操作。我制作了一个名为“startWarmUp”的文字函数,它只是一个每天运行一次的计时器触发函数。
我的用例是几乎每个函数都依赖于 ErrorHandler 和 Validator 类。虽然通常将某些东西设置为全局变量是不好的做法,但在这种情况下,我没有看到将这两个类设置为全局变量有任何坏处,因此它们在所有函数中都可用。
旁注:在本地开发时,您必须在 func start --functions <function requiring start.js> <other funcs>
中包含该函数为了让启动代码实际运行。
此外,还有一个针对此功能的功能请求,可以在此处进行投票:Azure Feedback
关于node.js - Azure 函数在 Node 启动时运行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48815835/
C语言sscanf()函数:从字符串中读取指定格式的数据 头文件: ?
最近,我有一个关于工作预评估的问题,即使查询了每个功能的工作原理,我也不知道如何解决。这是一个伪代码。 下面是一个名为foo()的函数,该函数将被传递一个值并返回一个值。如果将以下值传递给foo函数,
CStr 函数 返回表达式,该表达式已被转换为 String 子类型的 Variant。 CStr(expression) expression 参数是任意有效的表达式。 说明 通常,可以
CSng 函数 返回表达式,该表达式已被转换为 Single 子类型的 Variant。 CSng(expression) expression 参数是任意有效的表达式。 说明 通常,可
CreateObject 函数 创建并返回对 Automation 对象的引用。 CreateObject(servername.typename [, location]) 参数 serv
Cos 函数 返回某个角的余弦值。 Cos(number) number 参数可以是任何将某个角表示为弧度的有效数值表达式。 说明 Cos 函数取某个角并返回直角三角形两边的比值。此比值是
CLng 函数 返回表达式,此表达式已被转换为 Long 子类型的 Variant。 CLng(expression) expression 参数是任意有效的表达式。 说明 通常,您可以使
CInt 函数 返回表达式,此表达式已被转换为 Integer 子类型的 Variant。 CInt(expression) expression 参数是任意有效的表达式。 说明 通常,可
Chr 函数 返回与指定的 ANSI 字符代码相对应的字符。 Chr(charcode) charcode 参数是可以标识字符的数字。 说明 从 0 到 31 的数字表示标准的不可打印的
CDbl 函数 返回表达式,此表达式已被转换为 Double 子类型的 Variant。 CDbl(expression) expression 参数是任意有效的表达式。 说明 通常,您可
CDate 函数 返回表达式,此表达式已被转换为 Date 子类型的 Variant。 CDate(date) date 参数是任意有效的日期表达式。 说明 IsDate 函数用于判断 d
CCur 函数 返回表达式,此表达式已被转换为 Currency 子类型的 Variant。 CCur(expression) expression 参数是任意有效的表达式。 说明 通常,
CByte 函数 返回表达式,此表达式已被转换为 Byte 子类型的 Variant。 CByte(expression) expression 参数是任意有效的表达式。 说明 通常,可以
CBool 函数 返回表达式,此表达式已转换为 Boolean 子类型的 Variant。 CBool(expression) expression 是任意有效的表达式。 说明 如果 ex
Atn 函数 返回数值的反正切值。 Atn(number) number 参数可以是任意有效的数值表达式。 说明 Atn 函数计算直角三角形两个边的比值 (number) 并返回对应角的弧
Asc 函数 返回与字符串的第一个字母对应的 ANSI 字符代码。 Asc(string) string 参数是任意有效的字符串表达式。如果 string 参数未包含字符,则将发生运行时错误。
Array 函数 返回包含数组的 Variant。 Array(arglist) arglist 参数是赋给包含在 Variant 中的数组元素的值的列表(用逗号分隔)。如果没有指定此参数,则
Abs 函数 返回数字的绝对值。 Abs(number) number 参数可以是任意有效的数值表达式。如果 number 包含 Null,则返回 Null;如果是未初始化变量,则返回 0。
FormatPercent 函数 返回表达式,此表达式已被格式化为尾随有 % 符号的百分比(乘以 100 )。 FormatPercent(expression[,NumDigitsAfterD
FormatNumber 函数 返回表达式,此表达式已被格式化为数值。 FormatNumber( expression [,NumDigitsAfterDecimal [,Inc
我是一名优秀的程序员,十分优秀!