计划的WebJob不会按计划调用功能

时间:2018-11-07 10:49:58

标签: c# azure azure-webjobs

我是Azure Webjob概念的新手。我正在尝试创建一个将被触发的WebJob。

Program.cs

static void Main()
{
    var config = new JobHostConfiguration();

    if (config.IsDevelopment)
    {
        config.UseDevelopmentSettings();
    }

    var host = new JobHost(config);
    host.Call(typeof(Functions).GetMethod("MyMethod"));
    host.RunAndBlock();

}

Function.cs

[NoAutomaticTrigger]
public static void MyMethod()
{
   //Logic
}

我可以看到My WebJob正在运行,但是仅在部署的一开始就调用了该功能。我可以通过使用函数调用日志来运行该函数。

如果我没记错的话,它应该按我计划的那样调用函数吗?

2 个答案:

答案 0 :(得分:2)

您正在使用此行>>> from random import randrange >>> pile = [ ... [randrange(10) for _ in range(randrange(8))] ... for _ in range(10) ... ] >>> min(len(l) for l in pile), max(len(l) for l in pile) (0, 6) >>> sorted(pile, key=excludedgetter(0, 2, 4)) [[], [1], [9, 1, 8, 2, 4, 0], [0, 3], [7, 3, 4, 9, 7, 7], [8, 4, 4], [6, 4, 7, 9, 9], [0, 5, 3, 7, 2], [4, 6, 6, 0], [8, 8, 1]]

在启动时触发作业

如果您希望它由时间表触发, 只需在您的webjob项目中添加一个host.RunAndBlock();文件,其中包含您想要的计划时间

例如

settings.job

然后在program.cs中使用

{
  "schedule": "0 0 * * * *"
}

部署代码,不要忘记将using (var host = new JobHost(config)) { host.Call(typeof(Functions).GetMethod("MyMethod")); } 复制到输出目录,并且cron设置应该在门户网站的应用程序webjob视图下是可见的

答案 1 :(得分:0)

  

如果我没记错的话,它应该按照我的计划调用该函数,对吗?

什么时间表?您没有配置任何时间表。您唯一要做的就是一次调用MyMethod(通过使用反射获取方法!),然后在RunAndBlock上调用host

在Azure App Service> Create a scheduled WebJob

中查看使用WebJob运行后台任务

您可以看看Azure Functions。这可能也有帮助。