Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Melaksanakan Fungsi Tamat Masa dalam Skrip Shell dengan Tempoh Pratakrif?
Fungsi Tamat Masa dengan Tempoh Pratakrif
Dalam skrip shell, adalah berguna untuk mempunyai mekanisme untuk menamatkan tugasan yang berjalan lama untuk mengelakkan menunggu yang berlebihan . Cabaran yang dihadapi di sini ialah untuk membalut fungsi dalam skrip tamat masa, mengembalikan Palsu jika ia melebihi had masa yang ditetapkan.
Satu pendekatan ialah menetapkan pemasa tak segerak yang mencetuskan respons Palsu selepas selang masa yang telah ditetapkan. Nasib baik, penyelesaian sedemikian boleh dicapai menggunakan pengendali isyarat dalam pustaka isyarat (tersedia pada sistem berasaskan UNIX).
Proses ini melibatkan penciptaan penghias tersuai (@masa tamat) yang memanfaatkan isyarat. alarm() untuk menetapkan penggera untuk selang masa yang dikehendaki. Dalam fungsi yang dihias, apabila penggera tamat tempoh, pengecualian TimeoutError dinaikkan, dengan berkesan mengganggu operasi.
Untuk memasukkan penyelesaian ini ke dalam kod anda, simpan kod berikut sebagai timeout.py dan importnya:
import errno import os import signal import functools class TimeoutError(Exception): pass def timeout(seconds=10, error_message=os.strerror(errno.ETIME)): def decorator(func): def _handle_timeout(signum, frame): raise TimeoutError(error_message) @functools.wraps(func) def wrapper(*args, **kwargs): signal.signal(signal.SIGALRM, _handle_timeout) signal.alarm(seconds) try: result = func(*args, **kwargs) finally: signal.alarm(0) return result return wrapper return decorator
Sekarang, dalam kod aplikasi anda, beri anotasi sebarang fungsi yang mungkin berjalan lama dengan @penghias tamat masa. Contohnya:
from timeout import timeout # Short timeout @timeout(5) def slow_function(): # ... # Default timeout @timeout def another_slow_function(): # ... # Customize timeout and error message @timeout(30, error_message="Task timed out") def yet_another_slow_function(): # ...
Pendekatan ini memastikan bahawa jika fungsi mengambil masa lebih lama daripada selang tamat masa yang ditentukan, ia akan menimbulkan Ralat Tamat Masa dan mengembalikan Salah, membolehkan anda mengendalikan kelewatan yang tidak dijangka dengan anggun.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Fungsi Tamat Masa dalam Skrip Shell dengan Tempoh Pratakrif?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!