问题标签 [azure-webjobs-continuous]

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 投票
0 回答
199 浏览

azure-devops - 使用管道在同一个应用程序服务上部署多个 Web 作业,用最后一个替换所有作业

构建工件包含两个 Web 作业的单独文件夹,并包含在发布管道中。当尝试使用管道在相同的应用程序服务上部署时,实际上将所有现有的都替换为部署的最后一个 Web 作业。两个作业部署的任务都是成功的。

非常感谢任何帮助。

0 投票
1 回答
69 浏览

azure - WebJobs SDK 3 Braking on Function Exception

I have an Azure WebJob (.NET Core - SDK 3) that is braking when an execution of queue triggered function fails. I would like this WebJob to behave like others WebJobs (SDK 2 - .NET Framework) I have running on Windows WebApps.

When execution of queue triggered functions fail on WebJobs SDK 2 (Windows WebApp) the message is sent back to queue with DequeueCount incremented and after X times (default is 5) message is sent to poison queue. And the WebJob always keeps running.

Is it possible to have same behavior with WebJobs SDK 3? This is an example of described bahavior (webjobs.ricardogaefke.com). In this case I needed to use a try/catch and manually send the message to poison queue and it is a waste of the power of webjobs (retry is lost this way).

Thank you very much.

0 投票
1 回答
206 浏览

azure-webjobs - Azure WebJob:我正在从 Web 作业调用 sql server 存储过程

我必须以连续模式从 azure webjob 运行存储过程。我已经用 c# 编写了代码,并在我的开发环境中部署了相同的代码。

在监视了 3 或 4 天后,我发现,如果存储过程运行很长时间,webjobs 就会中止。我的程序需要大约 50 秒才能返回输出。那时工作中止。

如果存储过程快速返回数据,它工作正常。好像数据更多并且程序需要时间,我被中止了。但就我而言,我希望保持工作调整,直到程序返回数据。

我无法弄清楚。

我尝试了以下选项

  1. 始终开启 ON
  2. 停止等待时间:300

有什么建议吗。?

0 投票
1 回答
679 浏览

c# - Azure WebJobs 从静态函数中访问配置

我正在.net core 3.1 中创建一个网络作业。在这个项目中,我有一个定时器激活的函数,它应该读取队列 Q1 中的消息数量,如果为空,则将消息放入 Q2 并触发对 API 的休息调用。

为了检查 API 中有多少消息,我需要访问AzureWebJobsStorage我的 appsettings.json 中的 ,然后访问设置中的 url。

程序.cs

函数.cs

应用设置.json

我的设置

但是,当我运行它时,我收到以下错误:

错误索引方法“Functions.CronJob”Microsoft.Azure.WebJobs.Host.Indexers.FunctionIndexingException:错误索引方法“Functions.CronJob”---> System.InvalidOperationException:无法将参数“mySettings”绑定到类型 MySettings。确保绑定支持参数类型。如果您正在使用绑定扩展(例如 Azure 存储、ServiceBus、计时器等),请确保您已在启动代码中调用了扩展的注册方法(例如 builder.AddAzureStorage()、builder.AddServiceBus( )、builder.AddTimers() 等)。

除了上面代码中显示的内容之外,我还尝试使用ConfigurationManagerand Environment.GetEnvironmentVariable,当我尝试读取值时,这两种方法都给了我 null 。例如ConfigurationManager.AppSettings.GetValues("AzureWebJobsStorage").

我还尝试注册IConfiguration为服务services.AddSingleton(context.Configuration);并将其注入参数(而不是MySettings),但它也给了我相同的绑定错误。

我真的很茫然,我搜索了 SO 档案试图找到一个解决方案,我想我尝试了我所看到的一切都给人们带来了积极的结果,但不幸的是我没有其他海报那么幸运。

非常感谢任何指导。

编辑添加我的包

如果它对任何人有帮助,我正在使用以下内容

Azure.Storage.Queues (12.4.0)

Microsoft.Azure.WebJobs.Extensions (3.0.6)

Microsoft.Azure.WebJobs.Extensions.Storage (4.0.2)

Microsoft.Extensions.Logging.Console (3.1.7)

0 投票
1 回答
248 浏览

c# - Azure WebJobs 3.x 不会在 Azure 应用程序设置中使用 CRON 表达式触发

环境:.Net Framework 4.7.2

正在读取的应用程序设置:app.config,项目中没有 applicationsettings.json

问题:环境变量不会覆盖 project.exe.config(Kudu 中的一个)中的 CRON 表达式并触发。所有其他应用程序设置都被覆盖,但 CRON 表达式。

这是我的建设者:

0 投票
1 回答
39 浏览

c# - Azure WebJob 执行该函数的频率高于应有的频率

我创建了一个连续的 WebJob,它应该每 5 分钟执行一次我的公共函数。

它已经工作了好几天,但最近注意到它在较短的时间内被调用了两次。在开发 AppService 中,我可以看到它在 1 分 20 秒后第一次被调用,两次被调用。在生产中,差异甚至更短(20 秒)。

程序.cs:

函数.cs:

WebJob 输出详细信息表明它应该每 5 分钟调用一次:

[09/09/2020 07:16:54 > fc5cb9: INFO] 执行“Functions.ProcessDocumentsRou​​ndAboutAsync”(原因='计时器在 2020-09-09T 09:16:54 .5243173+02:00' 触发,ID=9c64dfc4 -e7b3-4857-a9bc-df40cc7d58c9)

[09/09/2020 07:16:56 > fc5cb9: INFO] 执行“Functions.ProcessDocumentsRou​​ndAboutAsync”(成功,Id=9c64dfc4-e7b3-4857-a9bc-df40cc7d58c9)

[09/09/2020 07:22:06 > fc5cb9: INFO] 执行“Functions.ProcessDocumentsRou​​ndAboutAsync”(原因='计时器在 2020-09-09T09:21:54.5364353+02:00' 触发,ID=e06eb211-2a6c- 49a0-a9ce-1aee003dc545)

[09/09/2020 07:22:07 > fc5cb9: INFO] 执行“Functions.ProcessDocumentsRou​​ndAboutAsync”(成功,Id=e06eb211-2a6c-49a0-a9ce-1aee003dc545)

函数调用日志:

Functions.ProcessDocumentsRou​​ndAboutAsync (09/09/2020 09:21:5 ...) Functions.ProcessDocumentsRou​​ndAboutAsync (09/09/2020 09:20:3 ...) Functions.ProcessDocumentsRou​​ndAboutAsync (09/09/2020 09:16:5 ) ...)

我找到了这个解决方案,但它不符合我的需求,因为我想连续运行它(允许我调试它,它不需要“热身”)当然我想知道这个的真正原因应该正在发生。

我不明白为什么直到现在它一直运行良好,以及为什么会发生这种情况。有任何想法吗?谢谢。

0 投票
1 回答
251 浏览

azure - Azure WebJob 代码未通过部署槽交换更新

我有一个带有多个部署槽的 Azure 网站。我使用 Visual Studio 部署到暂存槽,然后将其交换到生产中。

我的 Visual Studio 解决方案包含一个用于我的 Web 应用程序的项目和另一个用于连续 WebJob 的项目。我曾经(Right-click project) > Add > Existing Project as Azure WebJob配置要与 Web 应用程序一起部署到站点的 WebJob。

我的问题是WebJob 有时会在交换后继续运行旧代码。有时它会在一次调用时运行新代码,然后在下一次调用时切换回旧代码。我似乎无法找出押韵或原因。

今天早上,为了尝试找出造成这种情况的原因,我做了以下实验:

  1. 在暂存中删除 WebJob。
  2. 删除生产中的 WebJob。
  3. 将 Web 应用程序部署到暂存。
  4. 验证 WebJob 是否在 Staging 中运行新代码。
  5. 将分段转换为生产。
  6. 确认 WebJob 不再出现在 Staging 中,并且它现在出现在 Production 中。

我发现,在第 4 步之后,所有 WebJob 函数都在 Staging 中重新启动,并且都在运行新代码。但是在我将 Staging 切换到 Production 之后,在 Production 中没有新的 WebJob 调用,当我手动调用它时,旧代码运行了!

这到底是怎么回事?如何彻底清除旧代码并确保新的 WebApp 代码能够在生产环境中运行?

我确实看到另一个线程说选中Exclude files from the App_Data folder发布设置中的框可能会导致此问题,但我没有检查它。

我觉得我在这里服用疯狂的药丸。任何指针将不胜感激。


更新 1:正如我在下面的评论中所述,我已经放弃并切换到 Azure Functions,但我只是想到了一些可以帮助遇到此问题的其他人的东西。我记得至少有一次或两次,我通过手动上传 zip 文件而不是通过 Visual Studio 部署来部署我的 WebJob。我开始怀疑,是否有可能在幕后使用不同的代码路径会导致这种行为。也许这对某人来说是一个有用的指针。


更新2:我已经弄清楚发生了什么。我正在描述这一点,希望它可能对将来的某人有所帮助。

我们有几个部署槽:Staging、Production 和其他一些。一个这样的插槽称为副本。它的目的是成为生产的副本(相同的代码,相同的配置设置)。这个想法是,对于那些仅在生产中重现的奇怪的一次性问题,您可以将调试构建上传到副本插槽并附加调试器而不会中断生产。

这有时很有用,但我们并不经常使用它。结果是,在 Replica 插槽中运行的代码,包括我们的 WebJob 代码,与在生产中运行的代码相比,逐渐变得越来越过时。然而,与此同时,Replica WebJobs 继续运行旧代码,并且由于 Replica slot 具有与 Production 相同的所有配置设置,它与我们的 Production WebJobs使用相同的数据运行并写入相同的日志。因此,当我查看我的生产 WebJob 日志时,我会看到我知道不应该再存在的输出,但我不知道为什么。流氓代码实际上是在我忘记的另一个插槽中运行的。

于是,谜团解开了。这可能意味着我们不需要将所有内容都转移到 Azure Functions。但我仍然很高兴我们做到了。我更喜欢他们。我喜欢我们可以选择在与我们的网站相同的应用服务或单独的应用服务中运行它们,并且日志系统更好。整体感觉更现代。

无论如何,我希望这可以帮助那里的人。

0 投票
1 回答
79 浏览

azure - 用于监控服务的 Azure Webjob (API)

我需要一些关于如何为以下要求配置 Azure Webjob 的反馈。

  • 只需要一个 Web 作业。在该 Webjob 中,需要为多个 Geo 的每个服务(API)具有一个功能(例如:WestUS 和 Central US)。
  • WebJob 应该每 5 分钟运行一次。
  • 它应该只调用服务的 GET 端点,并且应该验证 HTTP 状态代码和响应正文。
  • 每个端点的每次运行都应在 Table(Configuration => Method Name, URL, IsActive) 中创建一个条目

例如:MethodName URL IsActive


获取用户 XXXX 1

获取产品 XXXX 0

  • 每个失败,即除了 HttpStatus 代码 2XX 之外,都应该通过获取 DB 配置触发一封电子邮件给已配置的受众 + 团队频道警报;该 DB 应该在多个 Geo's 中可用。

任何实施帮助将不胜感激。提前致谢。

0 投票
1 回答
317 浏览

azure - Azure Webjob 无故停止

我有一个连续的网络作业,应该一直运行到我停止它为止。我依靠这种情况,但由于某种原因,这种现象发生在我身上:

该代码没有引发任何错误,所以我想知道为什么网络作业会自行重新启动。是什么Detected WebJob file/s were updated, refreshing WebJob意思?我没有在 WebJob 的目录中创建/写入任何文件。

0 投票
1 回答
336 浏览

azure-webjobs - 使用 ARM 模板部署 WebJob

我目前正在尝试通过 ARM 模板将 Web 作业部署为我的应用服务的一部分。有没有人有通过 zip 部署执行此操作的示例?

我在这里和那里看到了有关为计划作业创建手臂模板的链接问题,但是对于如何为连续的网络作业执行此操作/如何利用 zip deploy 来部署他们的文件并不完全清楚。

我目前有这样的部分

将 deployPackageURL 链接到我的 zip 文件,其中包含我的 webjob 项目。但是,在检查应用服务资源时,没有部署任何 webjob。谁能指出我的 ARM 模板中可能存在的错误?谢谢!