Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure setting.job中提供了离子计划。一旦不运行,这些作业就不会出现在内存中_Azure_Azure Webjobs - Fatal编程技术网

Azure setting.job中提供了离子计划。一旦不运行,这些作业就不会出现在内存中

Azure setting.job中提供了离子计划。一旦不运行,这些作业就不会出现在内存中,azure,azure-webjobs,Azure,Azure Webjobs,Continuous one始终运行,因此进程始终存在于内存中。您可以使用Webjobs SKDTimeTrigger属性对其进行调度 您还将在仪表板中注意到这两种Webjob类型之间的差异。 对于触发的Webjobs,您将看到顶级jobs运行,然后调用函数,最后调用详细信息。 对于连续的WebJob,将调用这些函数,并最终调用详细信息。缺少作业运行,因为这只是一个长时间运行的作业 检查Kudu w3wp进程下的App Service/Process explorer以查看正在运行的Webjob

Continuous one始终运行,因此进程始终存在于内存中。您可以使用Webjobs SKD
TimeTrigger
属性对其进行调度

您还将在仪表板中注意到这两种Webjob类型之间的差异。 对于触发的Webjobs,您将看到顶级jobs运行,然后调用函数,最后调用详细信息。 对于连续的WebJob,将调用这些函数,并最终调用详细信息。缺少作业运行,因为这只是一个长时间运行的作业

检查Kudu w3wp进程下的App Service/Process explorer以查看正在运行的Webjobs进程

请注意,在提供配置的
Main
方法中,连续和触发的WebJob必须以不同的方式启动。当通过VisualStudio添加特定类型的Webjob时,所有配置都会出现

这是基于WebJobs 2.x的

我的建议是

  • 对于定期(例如,每隔几小时、几天一次)作业,使用触发 作业不运行时不会消耗资源
  • 对于更频繁的作业,请使用带有时间触发器的连续作业 属性,它将一直消耗资源,但不需要 额外的启动时间

谢谢您的解释。我复制了你的代码,它与我的原始代码相同。但是,发布web作业时,它会出现在azure网站中,但计划为“N/A”,并且不会在blob存储中创建任何文件夹。在本地运行,效果很好。我觉得奇怪的是,SDK实际上在发布时生成了一个空白的settings.job文件,而该作业的唯一工作方式是向该文件添加计划。(SDK版本3.04)@JasonClark,是否添加appsettings.json文件(添加azurewebjobstorage及其值)并右键单击该文件->将“复制到输出目录”设置为“更新时复制”@JasonClark,我刚刚将其发布到azure,我使用的包Microsoft.azure.WebJobs是3.0.8。是的,发布到azure后,settings.job文件为空,计划为N/A,但当您转到azure webjobs日志时,您可以看到它按照SDK的计划运行。我会用截图更新答案。是的,我有这个配置。当以“连续”而非触发方式发布作业时,我确实成功地使webjob工作。@JasonClark,它实际上是按照SDK定义的时间触发器运行的,有关详细信息,请转到webjobs日志。我还更新了我的答案,你可以看到它是按照计划运行的(即使计划是n/a,并且settings.job是空的,没关系)。谢谢你的解释。我复制了你的代码,它与我的原始代码相同。但是,发布web作业时,它会出现在azure网站中,但计划为“N/A”,并且不会在blob存储中创建任何文件夹。在本地运行,效果很好。我觉得奇怪的是,SDK实际上在发布时生成了一个空白的settings.job文件,而该作业的唯一工作方式是向该文件添加计划。(SDK版本3.04)@JasonClark,是否添加appsettings.json文件(添加azurewebjobstorage及其值)并右键单击该文件->将“复制到输出目录”设置为“更新时复制”@JasonClark,我刚刚将其发布到azure,我使用的包Microsoft.azure.WebJobs是3.0.8。是的,发布到azure后,settings.job文件为空,计划为N/A,但当您转到azure webjobs日志时,您可以看到它按照SDK的计划运行。我会用截图更新答案。是的,我有这个配置。当以“连续”而非触发方式发布作业时,我确实成功地使webjob工作。@JasonClark,它实际上是按照SDK定义的时间触发器运行的,有关详细信息,请转到webjobs日志。我还更新了我的答案,您可以看到它是按照计划运行的(即使计划为n/a,settings.job为空,也无所谓)。
    public void DoSomethingUseful([TimerTrigger("0 */1 * * * *", RunOnStartup = false)] TimerInfo timerInfo, TextWriter log)
    {
        // Act on the DI-ed class:
        string thing = _usefulRepository.GetFoo();
        Console.WriteLine($"{DateTime.Now} - {thing}");
    }
setting.job: {  "schedule": "0 */1 * * * *" }
    class Program
    {
        static void Main(string[] args)
        {
            var builder = new HostBuilder()
                .ConfigureWebJobs(config =>
                {
                    config.AddTimers();
                    config.AddAzureStorageCoreServices();
                })
                .ConfigureLogging((context, b) =>
                {
                    b.AddConsole();
                }
                )
                 .Build();

            builder.Run();
        }
    }
    public class SayHelloWebJob
    {
        public void ProcessCollateFiles([TimerTrigger("0 */1 * * * *", RunOnStartup = false)]TimerInfo timerInfo,TextWriter writer)
        {
            writer.WriteLine("hi, it is a testing running");
            Console.WriteLine("test");
        }
    }
{
  "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=xxx;EndpointSuffix=core.windows.net"
}