# बाहरी Stop और Cancellation — Agent Loops, Stop Conditions और Token Budgets

Source: https://www.geekswithgeeks.com/hi/agent-loops/stop-external

> 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()` बुलाता है।

```python
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
```

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

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

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