पाठ 8 / 25

बाहरी Stop और Cancellation

Users और systems को चलते loop को साफ़ तरीक़े से रद्द करने दें।

Steps के बीच flag जाँचें

Users Cancel दबाते हैं, servers बंद होते हैं, और parent jobs timeout होते हैं। Loop को बारियों के बीच किसी सुरक्षित बिंदु पर cancellation flag जाँचना चाहिए, फ़ाइल लिखने के बीच में नहीं। Flag लगने पर वह रुकता है, अपनी स्थिति सहेजता है और रहस्यमयी विफलता की जगह "रद्द" रिपोर्ट करता है।

Cancellation event

threading.Event thread-safe flag है। दूसरा thread (request handler, signal handler) cancel.set() बुलाता है।

import threading
cancel = threading.Event()

for step in range(max_steps):
    if cancel.is_set():
        save_state(messages)
        return {"status": "cancelled", "step": step}
    ...  # call, inspect, act, append

त्वरित जाँच: Cancel flag जाँचने की सबसे सुरक्षित जगह कौन-सी है?

  • फ़ाइल लिखने के बीच
  • बारियों के बीच, सुरक्षित बिंदु पर
  • कभी नहीं
  • सिर्फ़ process ख़त्म होने के बाद
Answer

बारियों के बीच, सुरक्षित बिंदु पर — बारियों के बीच जाँचने से अधूरे side effects नहीं बचते।