How to configure azure webjob to run every 30 seconds - azure

This should be quick - I know how to run .net webjobs down to every minute..
eg 0 0/1 * 1/1 * *
but I would like to run every 10 seconds!! I can find unix methods, but no azure webjobs / ,net examples..

To schedule a triggered WebJob you need to add a schedule property to the settings.job file. The value of the schedule is cron expression that has 6 fields to represent the schedule: {second} {minute} {hour} {day} {month} {day of the week}.
So you just add the following to a settings.job file if you want to run every 10 seconds.
{
"schedule": "*/10 * * * * *"
}
If your app runs continuous or scheduled WebJobs, enable Always On to ensure that the WebJobs run reliably. This feature is available only in the Basic, Standard, and Premium pricing tiers.
For more details, you could refer to this article.

the patterns seems to be like Cron schedule jobs
*/10 * * * *
https://crontab.guru

Related

Azure Functions timer trigger fires unstable

Our function app has TimerTrigger-function with CRON expression */10 * * * * * (every 10 seconds), and periodically it seems like trigger stops to fire, only manual app restarting helps. We're sure that function wasn't fired because it should insert records into DB.
We're using .net6 (In-Process) and runtime v4, App Service Plan with 'Always On' enabled and disabled logging sampling.
Sample InvocationId: 74089037-5f8a-4f30-beca-0261aba58400
You can see gaps in a timeline chart from Application Insights (all executions for last 48 hours).

Function App Time trigger not working

I have a function App. type is Timetrigger. I have given the time trigger expression 0 0 * * * * , as my requirement it to run with 1 Hour interval. I have refereed the TimeTrigger Cheat Sheet
But Unfortunetly its triggering in each 5 min. Somehow it's not working. Help me regarding this.
target--> Run the function App in the interval of 1 Hour.
If you have changed your code, I suggest you could right click project>rebuild your project to try again. Or you could try to use expression like '0 0 */1 * * *'.
The result:
But not sure why its getting triggered 5 min while putting the code in Azure Portal.
The code in portal and Visual Studio is different. You could try to right click project>publish>choose Azure function service to publish your function to portal. Then check the schedule in function.json:
In Portal, you could also click '+' to create TimeTrigger in Azure function service directly:
I got a conclusion out of the Issue, Although you will update the Time trigger schedule in the Code level, this will not impact the Running schedule. What ever is there in the configuration ( go to Integrate tab of the function App & check the timer value). Code value changes not impacting the config values. Need to change the config values manually.
You can set the trigger time as a config value, something like this:
[FunctionName(nameof(TimerFunction))]
public static async Task Run(
[TimerTrigger("%schedule%")]
TimerInfo timerInfo,
TraceWriter log)
{}
and then define schedule in the Application Settings of your Function App in Azure portal:
schedule 0 */5 * * * * (in this case every five minutes)
I'm using crontab.guru for choosing triggering intervals

Azure Timer Function is running multiple times on trigger

I have a timer function that runs every 12 hours that refreshes an oAuth token. For some reason the function run over and over many times resulting in about 3500 calls every 12 hours. Not sure if it is relevant but I have implemented the function in c# in Visual Studio and deployed to azure. My function does have an output binding to a azure blob for writing the refreshed token information. I thought originally that the problem was because I implemented the function as Async but the problem persists despite removing async.
Cron expression is wrong. I was using * * */12 * * * instead of 0 0 */12 * * *

azure - scheduling a webjob

I've developed a webjob and while I've been testing it, I set it to be manually triggered. I'm happy with the functionality and now I want to set it to run every 30 minutes.
In the publish file (webjob-publish-settings.json) I set this "runMode": "Continuous" and I included a setings.job file with this setting
{
"schedule": "0 */30 * * * *"
}
I initially set it to 'copy if newer' and I uploaded the webjob. In the azure webjobs section I had a listing for this webjob, type = continuous and it showed the schedule setting.
I've had to make some amendments and upload again but now the status says 'Pending Restart' and the schedule info has gone. I changed the settings.job file to 'copy always' but the schedule still isn't showing.(just n/a)
how is this process supposed to work ?
** UPDATE
I still cant get this to work, in my main program file I have this
Task callTask = host.CallAsync(typeof(Functions).GetMethod("CreateQueueMessage"));
callTask.Wait();
I then have a webjob-publish-settings.json file with this
"runMode": "OnDemand"
and finally, a settings.job file with this
"schedule": "0 0,15,30,45 * * * *"
so I would expect it to run every 15 mins now, but it doesn't, the schedule doesn't even show up alongside the webjob
If your goal is to have a scheduled WebJob, you should not be deploying it as a Continuous WebJob, which is a very different thing. Continuous WebJobs are for cases where you have an executable that starts and never terminates. Triggered (and scheduled) WebJobs are used when you have an exe that starts, performs one task, and then terminates.
The schedule is completely ignored in continuous WebJobs.
The reason you're seeing your Continuous job run every minute is that the system keeps trying to restart it, since it expects it to never terminate.

Scheduled WebJob

I'm creating a new Azure WebJob project -- which appears to be a polished version of a console app that can run as a web job.
I want this job to run based on a schedule but in the Main() method -- see below -- Microsoft gives you the host.RunAndBlock() for the job to run continuously.
Do I need to change that if I want the job to run at regularly scheduled intervals?
static void Main()
{
var host = new JobHost();
// The following code ensures that the WebJob will be running continuously
host.RunAndBlock();
}
When using the Azure WebJobs SDK you can use TimerTrigger to declare job functions that run on a schedule. For example here's a function that runs immediately on startup, then every two hours thereafter:
public static void StartupJob(
[TimerTrigger("0 0 */2 * * *", RunOnStartup = true)] TimerInfo timerInfo)
{
Console.WriteLine("Timer job fired!");
}
You can get TimerTrigger and other extensions by installing the Microsoft.Azure.WebJobs.Extensions nuget package. More information on TimerTrigger and the other extensions in that package and how to use them can be found in the azure-webjobs-sdk-extensions repo. When using the TimerTrigger, be sure to add a call to config.UseTimers() to your startup code to register the extension.
When using the Azure WebJobs SDK, you deploy your code to a Continuous WebJob, with AlwaysOn enabled. You can then add however many scheduled functions you desire in that WebJob.
An easy way to trigger a WebJob on a schedule would be to code it as a regular console application, and just add a 'settings.job' with the cron based scheduling configuration to the project.
For example, the following definition would trigger it every 5 minutes:
{
"schedule": "0 */5 * * * *"
}
No need to use JobHost, just make sure your WebApp is configured as 'Always On'.
You should then deploy the job as a triggered WebJob.
There are 2 ways that I know of for scheduling a web job instead of making it run continiously:
Create a scheduled WebJob using a CRON expression
Create a scheduled WebJob using the Azure Scheduler
You can find the documentation for both ways on azure.microsoft.com
I think you need RunAndBlock in case of Scheduled or Continuous but you can remove it if you have your job as on-demand

Resources