问题标签 [timer-trigger]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1127 浏览

azure-functions - 从 Azure 门户安排计时器触发的 Azure 函数

我有一个 Azure 函数(内置于 Visual Studio 2019,并在 Azure 的 .NET Core 3.x 堆栈上运行),它应该由计时器触发,例如每晚运行一次。

我可以轻松地创建函数并将计划定义为 NCRONTAB 表达式,如下所示:

像魅力一样工作 -我希望能够在 Azure 门户中定义计划 - 而不是在我的函数代码中 - 以处理例如 DEV、TEST 和 PROD 情况。在 DEV 和 TEST 平台上,我可能想每天运行几次——在生产中可能每周只运行一次。

但是使用这种方法,一旦设置了时间表 - 设置了,我就无法在 Azure 门户中更改它(所有输入字段都变灰/编辑被禁用)。

我希望我可以在我的 Azure 函数声明中跳过 NCRONTAB 表达式 - 就像这样:

然后在 Azure 门户中指定实际的 CRON 表达式 - 但不行,CRON 表达式是强制性的......

所以我在这里要求太多了吗?或者有没有办法在我的实际代码库之外安排这个?

0 投票
1 回答
362 浏览

python - 当我执行代码+测试时,Azure 函数中的计时器触发器不起作用

我在我的 Visual Studio 中的 Azure 函数中创建了一个计时器触发器,如下所示,并将其部署在 Azure 门户中。一旦我尝试执行代码+测试,它就会给我输出为 HTTP 响应代码:202 Accepted HTTP response content(它显示为空白)

当我部署并运行它时。它给了我 202 被接受,但我看不到我的输出生成或它被安排。

谁能帮我解决这个问题。

0 投票
0 回答
167 浏览

python - 无法在 Azure 门户中通过 python 执行定时器触发功能

我是天蓝色函数和整个天蓝色的初学者。我希望我的代码按照我的计划每小时或每天运行一次,因此选择继续使用 azure 函数。

我的目标是从 API 获取数据,然后将其保存到 azure 中的 cosmos db mongo api。

我可以通过普通的 python 代码来实现我的目标,但是当我将它集成到 azure 函数中时。我发现很难运行它。

以下是我的代码供您参考。

当我在天蓝色部署后运行它时,即测试+运行:

另外,当我运行它时,在我的本地。它不会导航到 execute_timer() 执行。

我在这里做什么?

此外,当我尝试在终端窗口中以“func host start”启动主机功能时,在窗口中会出现以下错误。

有什么我在这里做的,或者我需要做些什么。请建议!

0 投票
2 回答
3092 浏览

azure-functions - 如何从 blob 存储中读取数据并使用 azure 函数应用程序访问它

我的 Blob 存储中有一个 CSV 文件,我需要每天触发它所以我在 azure 函数应用程序中使用计时器触发器 我能够在我的 azure 函数应用程序中获取 Csv 文件数据

  • 如何读取和写入 CSV 文件数据并将其存储在.xlsx 文件中

  • 我是否需要使用绑定我是这个概念的新手,请通过一些示例指导我

我的功能应用程序:

0 投票
1 回答
95 浏览

azure - 部署时未触发 Azure Function 计时器触发器

我有一个像这样的定时器触发功能设置

我将 PBARCron 的应用程序设置设置为每 5 分钟一次:

在此处输入图像描述

但触发器没有触发。我连接到实时日志,但没有任何反应。它一直在说“过去 x 分钟内没有新的痕迹”

0 投票
1 回答
810 浏览

azure-functions - Azure Functions IsPastDue - 何时设置为 true?

我正在尝试了解 IsPastDue 标志。

我编写了以下函数来模拟它。

生成的日志是:

  • 2020-11-05T11:17:00.984 [信息] 执行 'Function1'(原因='在 2020-11-05T11:17:00.9844456+00:00 触发的计时器',ID=0080629c-8b23-4c64-ab2b-233e389115c0)
  • 2020-11-05T11:17:00.985 [信息] $Custom$C# 定时器触发功能开始于:11/5/2020 11:17:00 AM
  • 2020-11-05T11:17:45.991 [信息] $Custom$C# 定时器触发功能结束于:11/5/2020 11:17:45 AM
  • 2020-11-05T11:17:45.991 [信息] 执行“Function1”(成功,Id=0080629c-8b23-4c64-ab2b-233e389115c0,持续时间=45007ms)
  • 2020-11-05T11:17:46.006 [信息] 执行 'Function1'(原因 ='在 2020-11-05T11:17:46.0066396+00:00 触发的计时器',ID = 94521af2-c5ef-49d9-bb05-14e54581d3f8)
  • 2020-11-05T11:17:46.007 [信息] $Custom$C# 定时器触发功能开始于:11/5/2020 11:17:46 AM
  • 2020-11-05T11:18:31.015 [信息] $Custom$C# 定时器触发功能结束于:11/5/2020 11:18:31 AM
  • 2020-11-05T11:18:31.016 [信息] 执行“Function1”(成功,Id=94521af2-c5ef-49d9-bb05-14e54581d3f8,持续时间=45009ms)
  • 2020-11-05T11:18:31.031 [信息] 执行'Function1'(原因='计时器在 2020-11-05T11:18:31.0312837+00:00 触发',ID=aaae053a-5d91-4d8e-bd1b-99cec8813eec)
  • 2020-11-05T11:18:31.032 [信息] $Custom$C# 定时器触发功能开始于:11/5/2020 11:18:31 AM
  • 2020-11-05T11:19:16.045 [信息] $Custom$C# 定时器触发函数结束于:11/5/2020 11:19:16 AM
  • 2020-11-05T11:19:16.046 [信息] 执行“Function1”(成功,Id=aaae053a-5d91-4d8e-bd1b-99cec8813eec,持续时间=45015ms)
  • 2020-11-05T11:19:16.062 [信息] 执行'Function1'(原因='在 2020-11-05T11:19:16.0624948+00:00 触发的计时器',ID=a00c778f-a64c-4f87-a4c3-d523100204cb)
  • 2020-11-05T11:19:16.063 [信息] $Custom$C# 定时器触发功能开始于:11/5/2020 11:19:16 AM
  • 2020-11-05T11:20:01.073 [信息] $Custom$C# 定时器触发函数结束于:11/5/2020 11:20:01 AM
  • 2020-11-05T11:20:01.074 [信息] 执行“Function1”(成功,Id=a00c778f-a64c-4f87-a4c3-d523100204cb,持续时间=45012ms)
  • 2020-11-05T11:20:01.089 [信息] 执行'Function1'(原因='在 2020-11-05T11:20:01.0890795+00:00 触发的计时器',ID=37ad85ca-a0c0-4b7d-a39e-f9a42a5bca77)
  • 2020-11-05T11:20:01.090 [信息] $Custom$C# 定时器触发功能开始于:11/5/2020 11:20:01 AM
  • 2020-11-05T11:20:46.094 [信息] $Custom$C# 定时器触发功能结束于:11/5/2020 11:20:46 AM
  • 2020-11-05T11:20:46.095 [信息] 执行“Function1”(成功,Id=37ad85ca-a0c0-4b7d-a39e-f9a42a5bca77,持续时间=45005ms)
  • 2020-11-05T11:20:46.110 [信息] 执行“Function1”(原因='在 2020-11-05T11:20:46.1101441+00:00 触发的计时器',ID=bd3e21a2-f574-4c8b-834b-bdcf19e67d20)
  • 2020-11-05T11:20:46.110 [信息] $Custom$C# 定时器触发功能开始于:11/5/2020 11:20:46 AM

标志 IsPastDue 永远不会设置为 true。什么时候设置为真?

0 投票
2 回答
366 浏览

entity-framework - TimerTrigger 不注入 EF 数据库上下文

我有一个使用 Entity Framework (3.0.11) 的 Azure Function (v3)。

我正在尝试在计时器触发器中运行代码,TimerTrigger但是在计时器触发器中注入数据库似乎不起作用。

以下是一些(快速匿名的)代码示例。

CSPROJ

模型和 DBContext

一个创业班

一个程序.cs

SampleFunction_works使用数据库连接运行时,我们看到函数调用的结果是成功的。注入在 HTTP 触发器的上下文中工作。然而,在计时器触发器上,这不起作用。

在这一点上,我已经尝试了 8 个小时的不同事情:

  • 不出所料地访问db没有注入会出现一个空属性,那里没有魔法。
  • 添加MyDbContextRun函数失败,因为它不能被注入public static void Run([TimerTrigger("%TimerInterval%")] TimerInfo myTimer, ILogger log, MyDbContext db)
  • 与前面相同,但通过添加IServiceProvider services到方法签名会导致类似的错误消息,db = services.GetRequiredService<MyDbContext>();如果无法注入,则添加该行是无关紧要的
  • 例如,某些变量似乎可以在此范围内注入ExecutionContext,但我似乎无法在该对象上使用任何东西。

有没有办法:

  1. 用数据库注入计时器触发器?
  2. 使用计时器触发器来调用位于同一函数中的 HTTPtrigger?
  3. 任何其他允许我在 timertrigger 上下文中访问 EF 数据库的解决方案?

更新:

@StevePy 下面的评论是正确的。您可以使 timertrigger 的 RUN 方法非静态并利用注入的力量。我以前读过这是不可能的,但信息似乎已经过时了。

有关更多信息,请参阅此博客文章:https ://marcroussy.com/2019/05/31/azure-functions-built-in-dependency-injection/

或者获取此示例代码在本地为自己运行:

0 投票
1 回答
605 浏览

azure - Azure 函数和 WebJob - 计时器触发时的奇怪行为

我正在 Azure 上试验两种基于.NET Framework的可以定时器触发的机制:Azure Function v1WebJob。AF 部署在 Function App 上,WebJob 部署在 Api App 上。两者都有免费计划集。

我希望通过 CRON 计划重复运行一些测试代码(控制台中的 1 行)(测试两者:“0 */10 * * * *”,每 10 分钟一次)将是一项简单的任务。看起来并非如此。

注意:在开始实验之前,我通过测试队列触发的 WebJob 已经知道应该将连续 WebJob 设置为“始终开启”以防止在一个小时左右后休眠。但这不能在免费和共享计划上启用。但是,在队列触发的 WebJob 上,我设法通过向应用程序发送经过身份验证的请求以在每次向队列中添加新消息时唤醒它来创建一种解决方法,这样我可以确保 WebJob 在它有时不处于休眠状态需要完成的一些工作,即要处理的队列消息。

但是我认为计时器触发的 WebJob 不应该是“连续的”,而应该是“触发的”。但是当我将它部署为“触发”时,我得到了这个错误:

(内部异常 #0)ExitCode:-1,输出:命令 'cmd /c ""HeartbeatW ...' 由于 121 秒内没有输出或 CPU 活动而中止。如果需要,您可以增加 SCM_COMMAND_IDLE_TIMEOUT 应用程序设置(或 WEBJOBS_IDLE_TIMEOUT,如果这是一个 WebJob)。

我不确定增加超时如何帮助解决这个问题以及应该设置哪个值,但我的主代码可能有问题:

将 WebJob 部署为“连续”而不是“触发”可防止此错误,但仍有 2 个问题:

  • 部署后,我需要转到门户并选择“运行”以启动 WebJob - 我还没有发现这是否可以自动化,或者我是否必须切换到付费计划
  • WebJob 在运行一个小时左右后进入睡眠状态(因为它在免费计划上运行并且不能设置为“始终开启”),这次我没有解决方法来唤醒它,因为没有手动操作涉及

进一步使用 Azure Function,情况会变得更糟。如果我部署我的函数,请稍等片刻,然后转到函数>监视器,我可以看到函数没有在它应该运行的时间段上运行。但是,如果我保持监视器视图打开,那么我可以看到函数现在已开始按计划运行!所以我猜想查看日志会触发函数唤醒,就像向应用程序发送经过身份验证的请求到 WebJob 一样。至少它会持续一个小时左右,因为在那之后功能日志不会显示新的运行。

我读过 Azure Function 和 WebJob 都在引擎盖下的同一个调度程序上运行。这是 Azure Function 出现这种行为的原因吗?

所有这些都是设计的,不能改变吗?还是我应该在部署过程中做一些调整?

0 投票
2 回答
136 浏览

python-3.x - 定时器触发器不会触发队列但手动输入会-Python

我有一个队列触发器,当手动将消息添加到队列中时,它会启动并按预期运行。但是,当消息通过以下计时器触发函数写入队列时,它无法启动。我可以看到消息已由触发器成功写入。

**初始化.py**

主机.json

有什么我错过了吗?

0 投票
1 回答
29 浏览

azure-webjobs - 触发的 Webjob 是否应该完成?

例如,我创建了一个非常简单的 WebJob TimerTrigger

当我在 Azure 中运行它时,它永远不会完成。我期待这在每次运行时完成,然后在下一次触发时重新开始。相反,它永远不会停止运行:

Azure 仪表板的输出