Alarm

Introduction

The Alarm Extension provides the AlarmManager extended object, with easy mechanisms for handling long running operations that might timeout after a set amount of time.

API References:

Requirements

  • No external dependencies

As of Cement 3.0.8, applications using optional extensions should include them in their dependencies for future compatibility in the event additional dependencies are required:

Ex: cement[alarm]

Platform Support

  • Unix

  • Linux

  • macOS (Darwin)

Configuration

This extension does not rely on any application level configuration settings or meta options.

Usage

import time
from cement import App, CaughtSignal

class MyApp(App):
    class Meta:
        label = 'myapp'
        exit_on_close = True
        extensions = ['alarm']


with MyApp() as app:
    try:
        app.run()
        app.alarm.set(3, "The operation timed out after 3 seconds!")

        # do something that takes time to operate
        time.sleep(5)

        app.alarm.stop()

    except CaughtSignal as e:
        print(e.msg)
        app.exit_code = 1

Last updated