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:
​Cement Alarm Extension​
​Python Signal Library​
No external dependencies
Unix
Linux
macOS (Darwin)
This extension does not rely on any application level configuration settings or meta options.
import timefrom cement import App, CaughtSignal​class MyApp(App):class Meta:label = 'myapp'exit_on_close = Trueextensions = ['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 operatetime.sleep(5)​app.alarm.stop()​except CaughtSignal as e:print(e.msg)app.exit_code = 1
$ python myapp.pyERROR: The operation timed out after 3 seconds!Caught signal 14