Hướng dẫn python wait for signal - trăn chờ tín hiệu
SignalUNIX/Linux systems cung cấp các cơ chế đặc biệt để communicate giữa các process. Một trong số đó lấy tên là signals. Show
Một cách ngắn gọn, a signal giống như một notification của một event. Khi một event nào đó xảy ra trong system, một signal sẽ được tạo ra để notify tới các chương trình khác về event này. Một ví dụ đơn giản: Khi bạn đang run một command trên terminal. Câu lệnh đang chạy, mà bạn lại sử dụng tổ hợp phím 0 sinh ra. Và chương trình terminal sẽ đọc tín hiệu đó và thực thi việc dừng command lại.Trên UNIX-based systems, sẽ có 3 loại signals chính:
SIGALRM SIGCHLD
SIGCONT
SIGSTOPSIGTTIN SIGTTOUSIGURG
SIGWINCH User-defined signals: SIGQUIT SIGABRT SIGTERM
Mỗi một signal sẽ được đại diện bởi một integer value. Trên Ubuntu, bạn có thể check list signal này :Khi thực hiện lệnh 1, bạn cũng sẽ thể thấy cách sử dụng signal trong Ubuntu nó như thế nào:Python signal
Line 5, 6 define function handle signal. Trong function này mình sẽ print ra value integer của signal và frame mà nó nhận được cùng với signal.
Line 8 sử dụng 6 function để assign handle signal 0. Mỗi một khoảng thời gian, CPU nhận được 8, function 9 lại được thực hiện.Line 10, 11, 12 sử dụng import signal import time def handler(a, b): print("Signal Number:", a, " Frame: ", b) signal.signal(signal.SIGINT, handler) while True: print("Press ctrl + c") time.sleep(10) 0 để chương trình luôn chạy.Lưu đoạn code trên mà test thử :
Trên đây là ví dụ rất đơn giản về sử dụng sinal trong Python basic. DjangoDjango cung cấp các 1. Nó cho phép các app tách rời được notified khi các action xảy ra ở nơi khác trong framework.
3: Send trước hoặc sau khi delete() method được thực hiện trong model. 4: Sent khi 5 on a model is changed.import signal import time def handler(a, b): print("Signal Number:", a, " Frame: ", b) signal.signal(signal.SIGINT, handler) while True: print("Press ctrl + c") time.sleep(10) 6: Sent khi Django starts or finishes một HTTP request.Trong django, sử dụng 7 method để đăng ký một 8 function. 8 function này được called khi một signal được sent. Toàn bộ các signal’s receiver functions được gọi ở cùng một thời điểm và dựa theo thứ tự đăng ký.Bài toán dưới đây là thực hiện in ra dòng chữ 0 trên console sau mõi request được hoàn thành.
Receiver functionsĐầu tiên, 8 được define như thế nào ?Lưu ý, trong hàm 8 phải có 3 argument. Các arguments khác sẽ cần phải đẩy vào 4. |