问题标签 [azure-webjobs-triggered]

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 回答
696 浏览

azure - 是否可以将 Webjob 发布为“触发”类型以及“连续”类型

我有一个已转换为 Webjob 的控制台应用程序。

webjob中有很多功能需要每晚(午夜)运行一次。

但是,还有一个特定的需求是,同一个 Webjob 应该连续运行以执行某些作业,并且能够将来自多个用户的请求排队。

由于大多数过程是相同的,我不认为将另一个控制台应用程序创建为“连续”类型有什么意义。

由于我们在 azure 中进行了持续交付(当有新的 git 提交时,在线视觉工作室会自动构建和发布 Web 应用程序和 Web 作业)。

我如何设法告诉构建或发布过程从同一个控制台应用程序创建 2 个 Web 作业,其中一个是计划的(触发的),另一个是“连续的”?

当我写这个问题时,stackoverflow 的类似问题突出了我这个问题:Azure webjob;计划执行以及按队列触发

看起来可以在连续类型中使用TimerTrigger来处理这两种情况。

我会尝试看看这是否有效。请对这个工作案例提出您的建议。

0 投票
1 回答
552 浏览

azure - Azure webjobs 突然停止工作

从一天到另一天,我手动触发的 Azure webjobs 不再工作了。我正在尝试使用 Azure 门户中的“运行”按钮来触发它们。

我的 WebJob 没有做任何“花哨”的事情,他们只是从 Azure blob 队列中读取,进行一些处理,然后上传一个 csv 文件。

我在 Azure 门户中看到的错误消息是:

如果我检查浏览器控制台,我可以看到一个 http 404 错误,当对以下端点进行 http POST 时:

https://web1.appsvcux.ext.azure.com/websites/api/Websites/RunWebJob

如果我单击该链接,我会看到一个 401.1 错误页面,其中包含以下文本:

错误消息 401.1:无法识别登录凭据。确保您提供正确的用户名和密码。否则,请联系 Web 服务器的管理员寻求帮助。

很久以前(> 个月前)我没有对 Azure 门户或 webjob 代码进行任何更改。我什至尝试设置一个全新的 Azure webjob,但我收到了相同的错误消息。

任何帮助深表感谢!

0 投票
0 回答
506 浏览

azure - Azure WebJobs 疯狂 - ServiceBusTrigger 未触发

一个奇怪的事情发生在我的一个 WebJobs 中,我找不到问题所在。

此 WebJob 配置为在特定服务总线队列上收到消息后立即使用 ServiceBusTrigger。这个函数的执行时间是分钟/小时,所以我这样配置了 JobHostConfiguration:

如果我理解正确,这将授予每个功能:

  1. 每个实例最多并行执行 3 次(每条消息执行一次)
  2. 消息上的锁定最多保留 4 小时。如果处理时间少于 4 小时,这将避免消息重新排队。
  3. 一旦函数完成,消息就会从队列中删除(即使它应该是默认行为)。

这些消息包含必须为不同用户执行的作业。为了对不同的用户并行执行,但作为每个用户的单例,在函数内部我采取租约(与每个用户不同)并将其保留 60 秒,每 30 秒更新一次任务。

这似乎可行:为不同的客户并行执行作业,并对相同用户的相同请求进行序列化。

现在,有时 WebJob 会停止触发该功能,即使队列已满是消息。我不明白为什么。

一旦我重新启动该网络作业,一切都会像以前一样运行。关于为什么会发生这种情况的任何想法?

我注意到应用程序(错误地)停止了,即使网络作业正在运行。也许这就是问题所在?

0 投票
1 回答
521 浏览

azure - 为什么我的时间触发 webjob 一直在运行?

我有一个希望被时间触发的网络作业:

我的程序.cs:

我的发布设置.json:

这是它在 azure 门户上的样子: 在此处输入图像描述

我的问题是作业运行,我有 hello world,但作业保持运行状态并且它得到一个超时错误消息:

[02/05/2018 15:34:05 > f0ea5f: ERR ] 命令 'cmd /c ""Ores.Contr ...' 由于 121 秒内没有输出或 CPU 活动而中止。如果需要,您可以增加 SCM_COMMAND_IDLE_TIMEOUT 应用程序设置(或 WEBJOBS_IDLE_TIMEOUT,如果这是一个 WebJob)。

我能做些什么来解决这个问题?我有一个疯狂的猜测 RunAndBlock 可能是一个问题..但我没有看到解决方案..谢谢!

编辑:

我已经测试了 Rob Reagan 的答案,它确实有助于解决错误,谢谢!在我的同一项服务中,我还有另一项时间触发的工作(在核心中完成,而我的不是)。 在此处输入图像描述

您可以看到 Webjob.Missions 已“触发”,并且上次运行时的状态更新。你也可以看到上面的时间表。我想为我的“OrdersArchiving”提供相同的功能。我怎样才能做到这一点?谢谢!

0 投票
1 回答
1044 浏览

java - 手动触发的 Azure Webjob 被多次触发。返回 409(冲突)错误

没有为此设置 Azure 调度程序。这个 webjob 是我从 Azure 门户上传的 jar 文件。

告诉我如何将settings.job文件与 .jar 和 .bat 压缩包一起添加。我希望这会覆盖任何让我的工作触发两次的东西。

以下是日志:

您可以从日志中看到它返回的 409 错误,因为这里它触发了两次。虽然我只是触发过一次。知道为什么会这样吗?

也没有登台插槽。

另外,当我今天检查日志时,没有触发它,它们看起来像这样

所以你可以看到它每 5 分钟触发一次。知道为什么会自动发生这种情况吗?有没有我不知道的调度程序?

我设法放入了settings.job。这是它的外观:在此处输入图像描述

0 投票
1 回答
602 浏览

azure - Azure 计划的 Web 作业有时会触发两次

我们有一个 Azure WebJob,它计划在 UTC 每天上午 8:00 运行(CRON - 0 00 08 * * *)。大多数情况下它都正确触发,但有时它会触发两次(第二次运行正在发生〜第一次运行后 10 秒)。我可以在 Web 作业历史记录中看到,当它触发两次时,第一次运行的触发属性(来自 WebJob History JSON)显示为“外部 -”,第二次运行触发属性显示为“计划 - 0 0 8 * * *”但是我们没有任何外部服务触发此 WebJob。

当我检查作业调度程序日志以获取更多详细信息时,“Web Job Invoked”状态仅在 webjob 被触发两次的那些日子里出现。

0 投票
1 回答
186 浏览

azure - Azure WebJobs - 仅在第二个未运行时首先运行

我有 2 个 azure 触发的 Web 作业(时间触发器),但我想确定,只有一个正在运行。因此,如果 second 正在运行,则 first 应该等待,反之亦然。我不想将两个 Web 作业合并为一个(它由不同的开发人员开发和支持),我只想确定只有一个正在运行。怎么做?

0 投票
1 回答
200 浏览

azure - 什么是使用 Azure WebJobs 的 JobHostingConfiguration 的 AddService

我有以下 WebJob 功能...

我一直在研究它是如何被实例化的,我可以通过简单的调用来做到这一点......

然而,这让我想知道 TextWriter 和 CancellationToken 是如何包含在实例化中的。我发现 JobHostingConfiguration 有 AddService 的方法,我尝试使用它注入我的 appSettings,但它失败并出现错误“异常绑定参数”。

那么 CancellationToken 是如何包含在实例化中的,JobHostingConfiguration AddService 的用途是什么?

0 投票
1 回答
391 浏览

azure-webjobs - Azure WebJob QueueTrigger-ed 调用日志存储在哪里?

我正在尝试查找在 QueueTrigger webjob 中处理的队列消息。问题是处理后我没有将这些消息保存在任何地方,现在我需要它们。我知道它们在 SCM WebJobs 仪表板中可用

https://{sitename}.scm.azurewebsites.net/azurejobs/#/functions/invocations/{invocation-id}

...如果我知道 {invocation-id}。我有几百条已处理的消息,我正试图检索特定日期范围内的消息,因此在 Web 浏览器中逐页浏览是不切实际的。

有谁知道 SCM 显示的这些日志存储在哪里?我查看了azure-jobs-host-output并且azure-webjobs-dashboard无法在任何地方找到消息。我也查看过\data\jobs\continuous\{webjob}\job_log.txt,但这似乎只是作业的 Console.output,而不是传递给 webjob 函数的触发 CloudQueueMessage 数据。

0 投票
1 回答
217 浏览

c# - 我可以查询 Azure Web 作业队列吗?

我的 Azure Web 应用程序中运行了两个 Azure Web 作业:

  • 作业 A - 连续运行
  • 作业 B - 触发

Job A 的目的是基于两件事触发 Job B:

  1. 作业 B 在过去一小时内未针对指定的帐号运行(作为作业 A 的参数传递到作业 B。
  2. 从数据库中确定的其他一些业务逻辑

#2 很简单。我有一个问题是#1。作业 A 是否可以查询 Web 作业队列以查看作业 B 是否已执行?

这是作业 B(已触发):

这是作业 A(连续运行)。我在注释中添加了代码以显示我想做的事情: