使用 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 我如何为计划任务传递参数的主要内容,如果未能解决你的问题,请参考以下文章
如何为 Http 触发的 Azure 函数(隔离/进程外)生成 Api 客户端?
Azure 触发的 Webjob - 检测 webjob 何时停止
Azure 服务总线:Microsoft.Azure.WebJobs.Script.HostDisposedException:主机已释放,无法使用