ITimer



Set a Timer to warm yourself up! Just use this Online Timer with its various animated backgrounds of real Fireplaces! Online Timer & Alarm: OnlineClock.net offers this simple digital Timer to use for free online! Set a timer, see a Meme (updated daily)!

  1. Timer
  2. Itimerspec
  3. Timer For 20 Minutes
-->

This article explains how to work with timer triggers in Azure Functions. A timer trigger lets you run a function on a schedule.

This is reference information for Azure Functions developers. If you're new to Azure Functions, start with the following resources:

  • Create your first function: C#, JavaScript, Java, or Python.
  • Language-specific reference: C#, C# script, F#, Java, JavaScript, or Python.

For information on how to manually run a timer-triggered function, see Manually run a non HTTP-triggered function.

Packages - Functions 2.x and higher

The timer trigger is provided in the Microsoft.Azure.WebJobs.Extensions NuGet package, version 3.x. Source code for the package is in the azure-webjobs-sdk-extensions GitHub repository.

Support for this binding is automatically provided in all development environments. You don't have to manually install the package or register the extension.

Packages - Functions 1.x

The timer trigger is provided in the Microsoft.Azure.WebJobs.Extensions NuGet package, version 2.x. Source code for the package is in the azure-webjobs-sdk-extensions GitHub repository.

Support for this binding is automatically provided in all development environments. You don't have to manually install the package or register the extension.

Example

The following example shows a C# function that is executed each time the minutes have a value divisible by five (eg if the function starts at 18:57:00, the next performance will be at 19:00:00). The TimerInfo object is passed into the function.

The following example shows a timer trigger binding in a function.json file and a C# script function that uses the binding. The function writes a log indicating whether this function invocation is due to a missed schedule occurrence. The TimerInfo object is passed into the function.

Here's the binding data in the function.json file:

Here's the C# script code:

The following example function triggers and executes every five minutes. The @TimerTrigger annotation on the function defines the schedule using the same string format as CRON expressions.

The following example shows a timer trigger binding in a function.json file and a JavaScript function that uses the binding. The function writes a log indicating whether this function invocation is due to a missed schedule occurrence. A timer object is passed into the function.

Here's the binding data in the function.json file:

Here's the JavaScript code:

The following example demonstrates how to configure the function.json and run.ps1 file for a timer trigger in PowerShell.

Online timer big

An instance of the timer object is passed as the first argument to the function.

The following example uses a timer trigger binding whose configuration is described in the function.json file. The actual Python function that uses the binding is described in the init.py file. The object passed into the function is of type azure.functions.TimerRequest object. The function logic writes to the logs indicating whether the current invocation is due to a missed schedule occurrence.

Here's the binding data in the function.json file:

Here's the Python code:

Attributes and annotations

In C# class libraries, use the TimerTriggerAttribute.

The attribute's constructor takes a CRON expression or a TimeSpan. You can use TimeSpan only if the function app is running on an App Service plan. TimeSpan is not supported for Consumption or Elastic Premium Functions.

The following example shows a CRON expression:

Attributes are not supported by C# Script.

The @TimerTrigger annotation on the function defines the schedule using the same string format as CRON expressions.

Attributes are not supported by JavaScript.

Attributes are not supported by PowerShell.

Attributes are not supported by Python.

Configuration

The following table explains the binding configuration properties that you set in the function.json file and the TimerTrigger attribute.

function.json propertyAttribute propertyDescription
typen/aMust be set to 'timerTrigger'. This property is set automatically when you create the trigger in the Azure portal.
directionn/aMust be set to 'in'. This property is set automatically when you create the trigger in the Azure portal.
namen/aThe name of the variable that represents the timer object in function code.
scheduleScheduleExpressionA CRON expression or a TimeSpan value. A TimeSpan can be used only for a function app that runs on an App Service Plan. You can put the schedule expression in an app setting and set this property to the app setting name wrapped in % signs, as in this example: '%ScheduleAppSetting%'.
runOnStartupRunOnStartupIf true, the function is invoked when the runtime starts. For example, the runtime starts when the function app wakes up after going idle due to inactivity. when the function app restarts due to function changes, and when the function app scales out. So runOnStartup should rarely if ever be set to true, especially in production.
useMonitorUseMonitorSet to true or false to indicate whether the schedule should be monitored. Schedule monitoring persists schedule occurrences to aid in ensuring the schedule is maintained correctly even when function app instances restart. If not set explicitly, the default is true for schedules that have a recurrence interval greater than or equal to 1 minute. For schedules that trigger more than once per minute, the default is false.
Itimer alliance

When you're developing locally, app settings go into the local.settings.json file.

Caution

We recommend against setting runOnStartup to true in production. Using this setting makes code execute at highly unpredictable times. In certain production settings, these extra executions can result in significantly higher costs for apps hosted in Consumption plans. For example, with runOnStartup enabled the trigger is invoked whenever your function app is scaled. Make sure you fully understand the production behavior of your functions before enabling runOnStartup in production.

Usage

When a timer trigger function is invoked, a timer object is passed into the function. The following JSON is an example representation of the timer object.

The isPastDue property is true when the current function invocation is later than scheduled. For example, a function app restart might cause an invocation to be missed.

NCRONTAB expressions

Azure Functions uses the NCronTab library to interpret NCRONTAB expressions. An NCRONTAB expression is similar to a CRON expression except that it includes an additional sixth field at the beginning to use for time precision in seconds:

{second} {minute} {hour} {day} {month} {day-of-week}

Each field can have one of the following types of values:

TypeExampleWhen triggered
A specific value0 5 * * * *Once every hour of the day at minute 5 of each hour
All values (*)0 * 5 * * *At every minute in the hour, beginning at hour 5
A range (- operator)5-7 * * * * *Three times a minute - at seconds 5 through 7 during every minute of every hour of each day
A set of values (, operator)5,8,10 * * * * *Three times a minute - at seconds 5, 8, and 10 during every minute of every hour of each day
An interval value (/ operator)0 */5 * * * *12 times an hour - at second 0 of every 5th minute of every hour of each day

To specify months or days you can use numeric values, names, or abbreviations of names:

  • For days, the numeric values are 0 to 6 where 0 starts with Sunday.
  • Names are in English. For example: Monday, January.
  • Names are case-insensitive.
  • Names can be abbreviated. Three letters is the recommended abbreviation length. For example: Mon, Jan.

NCRONTAB examples

Here are some examples of NCRONTAB expressions you can use for the timer trigger in Azure Functions.

ExampleWhen triggered
0 */5 * * * *once every five minutes
0 0 * * * *once at the top of every hour
0 0 */2 * * *once every two hours
0 0 9-17 * * *once every hour from 9 AM to 5 PM
0 30 9 * * *at 9:30 AM every day
0 30 9 * * 1-5at 9:30 AM every weekday
0 30 9 * Jan Monat 9:30 AM every Monday in January

Note

NCRONTAB expression require a six field format. The sixth field position is a value for seconds which is placed at the beginning of the expression. Five field cron expressions are not supported in Azure.

NCRONTAB time zones

The numbers in a CRON expression refer to a time and date, not a time span. For example, a 5 in the hour field refers to 5:00 AM, not every 5 hours.

The default time zone used with the CRON expressions is Coordinated Universal Time (UTC). To have your CRON expression based on another time zone, create an app setting for your function app named WEBSITE_TIME_ZONE.

The value of this setting depends on the operating system and plan on which your function app runs.

Operating systemPlanValue
WindowsAllSet the value to the name of the desired time zone as given by the second line from each pair given by the Windows command tzutil.exe /L
LinuxPremium
Dedicated
Set the value to the name of the desired time zone as shown in the tz database.

Note

WEBSITE_TIME_ZONE is not currently supported on the Linux Consumption plan.

For example, Eastern Time in the US (represented by Eastern Standard Time (Windows) or America/New_York (Linux)) currently uses UTC-05:00 during standard time and UTC-04:00 during daylight time. To have a timer trigger fire at 10:00 AM Eastern Time every day, create an app setting for your function app named WEBSITE_TIME_ZONE, set the value to Eastern Standard Time (Windows) or America/New_York (Linux), and then use the following NCRONTAB expression:

When you use WEBSITE_TIME_ZONE the time is adjusted for time changes in the specific timezone, including daylight saving time and changes in standard time.

TimeSpan

A TimeSpan can be used only for a function app that runs on an App Service Plan.

Unlike a CRON expression, a TimeSpan value specifies the time interval between each function invocation. When a function completes after running longer than the specified interval, the timer immediately invokes the function again.

Expressed as a string, the TimeSpan format is hh:mm:ss when hh is less than 24. When the first two digits are 24 or greater, the format is dd:hh:mm. Here are some examples:

ExampleWhen triggered
'01:00:00'every hour
'00:01:00'every minute
'25:00:00'every 25 days
'1.00:00:00'every day

Scale-out

If a function app scales out to multiple instances, only a single instance of a timer-triggered function is run across all instances. It will not trigger again if there is an outstanding invocation is still running.

Function apps sharing Storage

If you are sharing storage accounts across function apps that are not deployed to app service, you might need to explicitly assign host ID to each app.

Functions versionSetting
2.x (and higher)AzureFunctionsWebHost__hostid environment variable
1.xid in host.json

You can omit the identifying value or manually set each function app's identifying configuration to a different value.

The timer trigger uses a storage lock to ensure that there is only one timer instance when a function app scales out to multiple instances. If two function apps share the same identifying configuration and each uses a timer trigger, only one timer runs.

Retry behavior

Unlike the queue trigger, the timer trigger doesn't retry after a function fails. When a function fails, it isn't called again until the next time on the schedule.

Manually invoke a timer trigger

The timer trigger for Azure Functions provides an HTTP webhook that can be invoked to manually trigger the function. This can be extremely useful in the following scenarios.

  • Integration testing
  • Slot swaps as part of a smoke test or warmup activity
  • Initial deployment of a function to immediately populate a cache or lookup table in a database

Please refer to manually run a non HTTP-triggered function for details on how to manually invoke a timer triggered function.

Troubleshooting

For information about what to do when the timer trigger doesn't work as expected, see Investigating and reporting issues with timer triggered functions not firing.

Next steps

Use a simple and convenient Countdown Timer online and for free

Hours
Minutes
Seconds
Minutes
Please select a Timer period

About 123Timer

123Timer is a simple, convenient, and free online timer. With it, you can track time directly on the site without installing additional applications. Our countdown timer will be useful in many cases: for example, if you like to play online games and you need to track time, as well as during sports activities, cooking, and many other cases. You just need to set the time and press the «Start» button, now be sure that 123Timer will notify you with an accuracy of milliseconds.
479 Votes

Day timer

Show all

Timer

Hour timer

Show all

Itimerspec

Minute timer

Show all

Timer For 20 Minutes

Second timer

Show all