在下面的WebJob项目中,我试图部署一个TimerTrigger WebJob函数,但是当通过“发布为Azure WebJob.”部署它时,无法让它按计划运行。在2017中。
Program.cs
class Program
{
static void Main()
{
var config = new JobHostConfiguration();
if (config.IsDevelopment)
{
config.UseDevelopmentSettings();
}
config.UseTimers();
var host = new JobHost(config);
host.RunAndBlock();
}
}Functions.cs
public class Functions
{
public static async Task ProcessAsync([TimerTrigger("0 */3 * * * *")] TimerInfo timerInfo, TextWriter log)
{
...
}
}webjob-publish-settings.json
{
"$schema": "http://schemastore.org/schemas/json/webjob-publish-settings.json",
"webJobName": "TestWebJob",
"runMode": "OnDemand"
}Settings.job
{ "schedule": "0 */3 * * * *" }这方面的文档是相当不存在的,它很困惑为什么Azure支持计划的CRON TimerTrigger的,但实际上并没有将它们作为部署时的选项。
这个是可能的吗?
发布于 2018-12-14 06:38:09
如果您手动创建了调度set作业,我想您可能已经发现它会生成一个settings.job来设置门户中的schedule.Then schedule ,读取schedule并显示出来。如果使用TimerTrigger部署VS2017,它将不会生成这个文件,因为您已经定义了TimerTrigger函数。
然后,我做了一些测试,向it.Firstly展示我用TimerTrigger创建了一个webjob并进行了部署,它将显示与您的n/a SCHEDULE一样的结果。然后我删除not作业进程并上传一个settings.job,然后刷新页面(而不是门户中的刷新),然后调度更改为CRON表达式。如果您删除该文件,它将更改回。


至于日志,在我看来,它也是由settings.job引起的,如果您有这个文件,它将每隔x分钟触发这个网络作业,如果没有它,它将在don作业中每隔x分钟触发该函数。
如果你还有问题,请告诉我。
发布于 2018-12-13 16:03:27
上面的代码似乎是工作的。但是,如果您熟悉手动运行“调度”WebJobs,那么它的运行方式将与您想象的完全不同。
如果要手动运行它们,通常会看到最高级别的日程安排,以及每x分钟更新一次的状态,等等:

您还会看到在父级更新日志,如下所示:

但是,在使用上述方法通过Visual 2017进行部署时,您只能在WebJob的生存期内运行它一次。因此,您也只能在日志列表中获得一个父日志。
虽然如果您单击此处,您将看到每个计划函数日志的各个日志:

希望这对正在考虑设置WebJobs :)的其他人是有意义的。)
https://stackoverflow.com/questions/53764947
复制相似问题