使用 azure webjobs 我如何为计划任务传递参数

Posted

技术标签:

【中文标题】使用 azure webjobs 我如何为计划任务传递参数【英文标题】:with azure webjobs how do i pass parameter for a scheduled task 【发布时间】:2015-06-14 02:53:40 【问题描述】:

我正在创建一个将作为 Azure webjob 运行的 dot net 控制台应用程序。它计划每小时运行一次。

我想知道在调用作业时如何将参数传递给作业?

【问题讨论】:

这有点违背“每小时一次”的目的......时间触发的工作应该在开始时拥有所有可用的信息,并且不需要额外的输入。你想传递什么参数?您能否详细说明您的方案? @VictorHurdugaci 我不知道您是如何得出这样的结论,即它违背了计划作业向其传递参数的目的。这对我来说在很多情况下都是有意义的。例如,我们有一个清理过程,传递清理的天数在我们的情况下是完全有效的。 我们也有类似的要求。保存摘要数据的几个作业。同一个网络作业可以每 15 分钟、每小时等处理一次,但需要传入一个参数,这样我就不必管理一堆具有相同代码的不同网络作业。 【参考方案1】:

Scheduled WebJobs 实际上是 2 个独立的资源:

    触发的 WebJob Azure 调度程序作业

要将参数传递给 WebJob,您需要转到计划的作业(在管理门户中)并更新用于调用触发的 WebJob 的 url。

此处描述了 REST API:https://github.com/projectkudu/kudu/wiki/WebJobs-API#invoke-a-triggered-job

基本上你只需要在网址末尾添加?arguments=your arguments即可。

这些参数作为命令行参数传递给您的可执行文件。

【讨论】:

也用于发布请求?发送 multipart/form-data 怎么样? 这个答案还有效吗?我在管理门户中看不到“计划的作业”。他们写了很多关于将 settings.job 文件放在 App_Data/jobs/triggered/JOB_NAME/ 中的内容,但是没有示例如何在其中包含参数。我不确定这是否有效。 这仍然相关,请确保使用旧门户 在新门户下也是相关的。查找“计划调度程序集合”。那是保存调度程序作业的容器,与此答案中引用的“计划作业”相同。 如何打开旧门户?

以上是关于使用 azure webjobs 我如何为计划任务传递参数的主要内容,如果未能解决你的问题,请参考以下文章

如何在不删除的情况下暂停 azure webjob?

Azure - 将 WCF 服务作为 WebJob 运行

如何将消息添加到 azure webjobs 队列

如何为 Http 触发的 Azure 函数(隔离/进程外)生成 Api 客户端?

Azure 触发的 Webjob - 检测 webjob 何时停止

Azure 服务总线:Microsoft.Azure.WebJobs.Script.HostDisposedException:主机已释放,无法使用