Alarm
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:
- 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]
- Unix
- Linux
- macOS (Darwin)
This extension does not rely on any application level configuration settings or meta options.
Example: Using Alarm Extension
cli
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
$ python myapp.py
ERROR: The operation timed out after 3 seconds!
Caught signal 14
Last modified 1yr ago