Globus Timers provides a simple way to schedule tasks. A timer can be used to schedule specific tasks to occur at a particular time or to repeat at regular intervals. The Globus Timers service currently supports scheduling of transfer tasks.

A timer is a definition of a task to be performed and a schedule for when to perform it. When a timer's schedule condition is reached, a timer run is created, showing the result of that task submission.

Getting Started

The best way to get started is to try creating a timer.

Web App

To create a transfer timer using the Globus Web App:

  1. Log in to the Globus Web App at app.globus.org.

  2. Open the File Manager by clicking the "File Manager" icon in the lefthand navigation menu.

  3. Configure a transfer task that you wish to schedule, including the source and destination collections and the files to transfer.

  4. Select the "Transfer & Timer Options" pulldown menu in the center of the page, just below the collection and path settings.

  5. At the bottom of the pulldown menu, set a "Schedule Start" date and time, as well as a "Repeat" interval if desired.

  6. Click the appropriate "Start" button underneat the collection and path settings to create the timer.

CLI

To create a transfer timer using the Globus CLI:

  1. Install the Globus CLI.

  2. Log in to the Globus CLI by running the command:

    globus login
  3. Use the globus timers create command to create a timer. For example:

    globus timers create transfer \
        6c54cade-bde5-45c1-bdea-f4bd71dba2cc:/~/ \
        31ce9ba0-176d-45a5-add3-f37d233ba47d:/~/ \
        --interval 1h30m \
        --stop-after-runs 2

    This will create a timer that transfers files from the source collection to the destination collection every 1 hour and 30 minutes, beginning immediately (because --start was omitted), and stopping after 2 runs.

  4. To view the status of your timer, run the command:

    globus timer show <timer-id>

    …​where <timer-id> is the ID of the timer you created in step 3.

Behaviors

Schedules

Globus Timers support two types of timer schedules:

  • Run-once: The timer will run only once, at the specified start time.

  • Recurring: The timer will run at regular intervals, starting at the specified start time.

A timer provides a number of scheduling options, including:

  • Start: The time at which the timer will first run; when omitted, defaults to the current time (i.e., the first run will begin immediately)

  • End conditions: The conditions under which the timer will stop running

    • Iterations: The timer will stop after a specified number of iterations (this does not include iterations that were skipped, such as while the timer was inactive). See "Timer Statuses" below for more information.

    • Time: The timer will stop after a specified time.

  • Interval: The time between successive runs of the timer (this is not set in the case of "run-once" timers)

When Timer Runs Will Occur

Globus Timers determines when your timer is eligible to run using the timer's start time and its interval. Each time your timer is eligible to run, it is called a "timer tick". Ticks occur on the following pattern:

  • Tick 1: At the timer's start time

  • Tick 2: At the timer's start time + interval

  • Tick n+1: At the timer's start time + (n * interval)

  • …​ (until the end condition is met)

"Run-once" timers (i.e., timers without a configured interval) will only have one tick, at the start time.

Note

In most cases, a timer run will occur within the specified minute that its tick occurs. However, a timer run may not begin at the exact moment the timer tick occurs, especially if there are many timers scheduled to run at the same time.

Retries

In some cases, a timer may encounter errors when attempting to start a new timer run.

  • In the case that the timer encounters an error that could be transient (e.g., network error, timeout, etc.), the timer may retry the timer run for up to 45 minutes. Recurring timers with an interval of two minutes or longer will retry for up to half of the timer’s interval (but no more than 45 minutes); for example, if the timer has an interval of 30 minutes, it will retry for up to 15 minutes. Run-once timers will retry for 45 minutes.

  • In the case that the timer encounters an error that requires user intervention to resolve (for example, additional consents are needed), the timer will be paused and the owner will be notified. See below for additional details on resuming inactive timers.

  • If the error encountered is not resolvable (e.g., an HTTP 404 error, indicating that the timer's configured target is not found), the timer will be ended and the owner will be notified.

Timer Statuses

A timer can be in one of four states:

  • active: The timer is running and will run again at the next scheduled time.

  • inactive: The timer is not running and will not run again until it is resumed.

    • This can occur automatically when the timer is missing a necessary consent, or when a new login is required to re-authorize the timer. In these cases, the timer will be paused and the owner will be notified via email.

    • A timer can also be made inactive manually, when the owner pauses the timer.

  • ended: The timer has reached its end conditions and will not run again.

  • delete_in_progress: The timer is in the process of being deleted; once it has cleaned up all of its resources, it will no longer appear in your list of timers.

Pausing and Resuming Timers

When a timer becomes inactive, an email will be sent to the owner with instructions indicating how to resume the timer.

Timers may also be made inactive manually, by the owner, by pausing the timer. A timer can be paused at any time, and will not run again until it is resumed.

To pause a timer in the Globus Web App, click the "Pause" button in the timer details page.

To pause a timer in the Globus CLI, run the command:

globus timer pause <timer-id>

…​where <timer-id> is the ID of the timer you wish to pause.

A timer can similarly be resumed in the Globus CLI by running the command:

globus timer resume <timer-id>

…​where <timer-id> is the ID of the timer you wish to resume.

Limits

The Globus Timers service has the following usage limits:

  • A user’s timers cumulatively cannot run more often than once per minute.

  • Only the last 90 days of activity are retained for a timer.

CLI, SDK, and APIs

Globus Timers is supported in the Globus CLI and the Globus Python SDK.

Updates and Support

Release updates, feature announcements, and discussions for all Globus services take place on the Globus Discuss mailing list: discuss@globus.org

If you have any questions, please contact support@globus.org.