Çok fazla paralel CAPTCHA görevi çalıştırdığınızda CaptchaAI, ERROR_NO_SLOT_AVAILABLE değerini döndürür. Bu, hesabınızın eş zamanlı görev sınırını aştığınız anlamına gelir. Bu kılavuzda sınırlar, bunların nasıl ele alınacağı ve sınıra ulaşmadan verimi nasıl en üst düzeye çıkarabileceğiniz açıklanmaktadır.
Belirtiler
| Ne görüyorsun | Sebep |
|---|---|
ERROR_NO_SLOT_AVAILABLE |
Aynı anda çok fazla aktif görev |
| HTTP 429 yanıtları | API uç noktasına saniyede çok fazla istek gönderiliyor |
| Bazı görevler başarılı olur, diğerleri başarısız olur | Sınıra aralıklı olarak ulaşıyorum |
| Çözme süreleri artar | Hesabınızda kuyruk tıkanıklığı |
Sınırları anlamak
CaptchaAI'nin iki tür oran sınırı vardır:
| Sınır türü | Neyi kontrol ediyor | Hata |
|---|---|---|
| Eşzamanlı görevler | Aynı anda çözülen maksimum görev sayısı | ERROR_NO_SLOT_AVAILABLE |
| Talep oranı | /poll uç noktalarını göndermek için saniyede maksimum API çağrısı | HTTP429 |
Eşzamanlı görev sınırınız planınıza bağlıdır. Kontrol panelinizi şu adresten kontrol edin:captchaai.commevcut limitiniz için.
Düzeltme 1: Eşzamanlılığı sınırlamak için bir semafor ekleyin
Kaç görevin paralel olarak çalıştığını kontrol edin:
import requests
import time
import threading
API_KEY = "YOUR_API_KEY"
MAX_CONCURRENT = 20 # Stay below your account limit
semaphore = threading.Semaphore(MAX_CONCURRENT)
def solve_captcha(params):
"""Solve a CAPTCHA with concurrency control."""
with semaphore:
params["key"] = API_KEY
params["json"] = 1
submit = requests.post("https://ocr.captchaai.com/in.php", data=params).json()
if submit.get("status") != 1:
raise RuntimeError(f"Submit: {submit.get('request')}")
task_id = submit["request"]
time.sleep(10)
for _ in range(30):
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY, "action": "get", "id": task_id, "json": 1
}).json()
if result.get("status") == 1:
return result["request"]
if result.get("request") != "CAPCHA_NOT_READY":
raise RuntimeError(f"Solve: {result['request']}")
time.sleep(5)
raise TimeoutError("Timed out")
Düzeltme 2: ERROR_NO_SLOT_AVAILABLE üzerinde yeniden deneyin
Sınıra ulaştığınızda hemen başarısız olmak yerine bekleyin ve yeniden deneyin:
def submit_with_retry(params, max_retries=5):
"""Submit with automatic retry for slot errors."""
params["key"] = API_KEY
params["json"] = 1
for attempt in range(max_retries):
resp = requests.post("https://ocr.captchaai.com/in.php", data=params).json()
if resp.get("status") == 1:
return resp["request"]
error = resp.get("request", "")
if error == "ERROR_NO_SLOT_AVAILABLE":
wait = 2 ** attempt # Exponential backoff: 1, 2, 4, 8, 16 seconds
print(f"No slot available, retrying in {wait}s (attempt {attempt + 1})")
time.sleep(wait)
continue
else:
raise RuntimeError(f"Submit error: {error}")
raise RuntimeError("Max retries exceeded — no slots available")
Çözüm 3: Görev kuyruğunu kullanma
API'yi doldurmak yerine görevleri sıraya koyun ve bunları kontrollü bir hızda işleyin:
from queue import Queue
from threading import Thread
task_queue = Queue()
results = {}
def worker():
while True:
task_id_local, params = task_queue.get()
try:
token = solve_captcha(params)
results[task_id_local] = {"status": "ok", "token": token}
except Exception as e:
results[task_id_local] = {"status": "error", "message": str(e)}
finally:
task_queue.task_done()
# Start worker threads (limited by semaphore)
for _ in range(MAX_CONCURRENT):
t = Thread(target=worker, daemon=True)
t.start()
# Add tasks to queue
captcha_tasks = [
{"method": "userrecaptcha", "googlekey": "KEY1", "pageurl": "https://site1.com"},
{"method": "userrecaptcha", "googlekey": "KEY2", "pageurl": "https://site2.com"},
# ... more tasks
]
for i, params in enumerate(captcha_tasks):
task_queue.put((i, params))
task_queue.join()
print(f"Completed: {len(results)} tasks")
Düzeltme 4: Yoklama sıklığını azaltın
Çok sık yapılan yoklama, API çağrılarının boşa harcanmasına neden olur ve oran sınırlarını tetikleyebilir:
# WRONG — polling every 1 second
time.sleep(1)
# CORRECT — poll every 5 seconds
time.sleep(5)
# BETTER — wait longer on initial delay, then poll
time.sleep(15) # Initial wait
for _ in range(20):
# ... poll
time.sleep(5)
Aktif görevleri izleme
Şu anda kaç görevin etkin olduğunu takip edin:
active_count = 0
lock = threading.Lock()
def track_solve(params):
global active_count
with lock:
active_count += 1
print(f"Active tasks: {active_count}/{MAX_CONCURRENT}")
try:
return solve_captcha(params)
finally:
with lock:
active_count -= 1
SSS
Varsayılan eşzamanlı görev sınırı nedir?
Bu, hesap planınıza bağlıdır. Mevcut limitiniz için CaptchaAI kontrol panelinizi kontrol edin. Planınızı yükselterek bunu artırabilirsiniz.
Oylama oran sınırına dahil mi?
Evet. Her res.php isteği önemlidir. Her 1 saniyede bir değil, her 5 saniyede bir anket yapın.
Eşzamanlı limitimi artırabilir miyim?
Evet. Maksimum eşzamanlı görev sayısını artırmak için CaptchaAI desteğine başvurun veya planınızı yükseltin.
ERROR_NO_SLOT_AVAILABLE ile HTTP 429 arasındaki fark nedir?
ERROR_NO_SLOT_AVAILABLE çok fazla görevin çözülmesi anlamına gelir. HTTP 429, saniyede çok fazla API isteğinin olduğu anlamına gelir (yalnızca yoklama bile). Her ikisi de geri çekilmeyi gerektirir.
Çözümünüzü CaptchaAI'de ölçeklendirin
Verimi en üst düzeye çıkarıncaptchaai.com.