Dalam kod anda, anda menghadapi panggilan fungsi berkaitan soket daripada modul luaran yang kadangkala menyekat untuk tempoh yang tidak boleh diterima. Anda mencari penyelesaian untuk mengehadkan masa pelaksanaan panggilan fungsi ini. Pendekatan yang berdaya maju melibatkan penggunaan urutan lain.
Versi yang diperhalusi bagi jawapan yang diterima memanfaatkan pernyataan dengan untuk meningkatkan sintaks fungsi tamat masa:
import signal from contextlib import contextmanager class TimeoutException(Exception): pass @contextmanager def time_limit(seconds): def signal_handler(signum, frame): raise TimeoutException("Timed out!") signal.signal(signal.SIGALRM, signal_handler) signal.alarm(seconds) try: yield finally: signal.alarm(0) try: with time_limit(10): long_function_call() except TimeoutException as e: print("Timed out!")
Dengan memasukkan kod ini, anda boleh mengurus had masa untuk panggilan fungsi dan mengendalikan pengecualian tamat masa dengan berkesan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Had Masa untuk Panggilan Fungsi untuk Mencegah Penyekatan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!