The Alarm Extension provides the 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
$ python myapp.py
ERROR: The operation timed out after 3 seconds!
Caught signal 14