py.lib

Yohn Y. 2022-08-27 Parent:ff755f64cda8

42:d9a3784f681b Go to Latest

py.lib/Alarm.py

+ Возможность удаления cookie по полному объекту (полезно, когда выставляются особые параметры на cookie, и их не удаётся удалить по имени)

History
awgur@13 1 #!/usr/bin/python
awgur@24 2 # coding: utf-8
awgur@13 3
awgur@13 4 from signal import SIGALRM, alarm, signal
awgur@13 5
awgur@23 6
awgur@24 7 class AlarmTimeout(Exception):
awgur@24 8 pass
awgur@13 9
awgur@23 10
awgur@13 11 def _handler(sig, frame):
awgur@13 12 raise AlarmTimeout('Operation timeout')
awgur@13 13
awgur@23 14
awgur@23 15 class Alarm(object):
awgur@13 16 def __init__(self, timeout):
awgur@13 17 signal(SIGALRM, _handler)
awgur@13 18 alarm(timeout)
awgur@13 19
awgur@13 20 def __enter__(self):
awgur@13 21 pass
awgur@13 22
awgur@23 23 def __exit__(self, e_type, e_obj, tb):
awgur@23 24 if e_obj is None:
awgur@13 25 alarm(0)
awgur@13 26
awgur@13 27 def __del__(self):
awgur@13 28 alarm(0)
awgur@13 29