Eşzamansız İş Akışları ve Arka Plan İşleri
Uzun süre çalışan aracılar kuyruklara (Celery, RQ, Temporal) ihtiyaç duyar; bir iş kimliği döndürün ve durumu yoklayın.
Eşzamansız İş Akışları ve Arka Plan İşleri, CoddyKit'te ücretsiz bir AI Agents dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Agents öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Agents kursu toplamda 4 dersten oluşur.
Bu dersin bazı bölümleri henüz çevrilmemiş olup İngilizce olarak gösterilmektedir.
İstek Döngüsü Çok Yavaş Olduğunda
Bazı aracı görevleri 30 saniye, 5 dakika veya saatler sürer. HTTP bağlantısını açık tutamazsınız. Bunları eşzamansız arka plan işlerine taşıyın.
Kalıp
- İstemci görevi POST ile gönderir -> sunucu işi oluşturur ve job_id döndürür
- Çalışan işi bir kuyruktan alır
- İstemci durum için GET /jobs/{id} yoklaması yapar
- İş tamamlandığında sunucu sonucu döndürür
Submit Endpoint
from uuid import uuid4
@app.post('/jobs')
def submit(req: AgentRequest):
job_id = str(uuid4())
redis.hset(f'job:{job_id}', mapping={'status': 'queued', 'user_id': req.user_id})
queue.enqueue('run_agent_job', job_id, req.query)
return {'job_id': job_id, 'status': 'queued'}Status Endpoint
@app.get('/jobs/{job_id}')
def status(job_id: str):
data = redis.hgetall(f'job:{job_id}')
if not data:
raise HTTPException(404)
return {
'status': data['status'],
'result': data.get('result'),
'error': data.get('error')
}Çalışan
Ayrı bir süreç kuyruğu tüketir:
def run_agent_job(job_id, query):
redis.hset(f'job:{job_id}', 'status', 'running')
try:
result = run_agent(query)
redis.hset(f'job:{job_id}', mapping={'status': 'done', 'result': result})
except Exception as e:
redis.hset(f'job:{job_id}', mapping={'status': 'failed', 'error': str(e)})Kuyruk Seçenekleri
- RQ (Redis Queue) — minimalist Python
- Celery — klasik Python seçeneği, birçok özellik
- Temporal — kalıcı iş akışları, yeniden denemeler, gözlemlenebilirlik
- Dramatiq — Celery alternatifi
- Bulut yerel — Cloud Tasks, SQS, Pub/Sub
Kalıcı İş Akışları için Temporal
Aracı iş akışları durum bilgisi taşır. Temporal'ın kalıcı yürütme modeli bu yapı için oldukça uygundur:
import temporalio
@temporalio.workflow.defn
class AgentWorkflow:
@temporalio.workflow.run
async def run(self, query: str) -> str:
plan = await workflow.execute_activity(plan_step, query, schedule_to_close_timeout=timedelta(minutes=2))
results = await workflow.execute_activity(execute_step, plan, schedule_to_close_timeout=timedelta(minutes=10))
return await workflow.execute_activity(synthesise_step, results)Kısmi Güncellemeleri Akışla İletme
Uzun süren işler ilerleme güncellemelerinden yararlanır. Server-Sent Events veya WebSockets kullanın:
@app.get('/jobs/{job_id}/stream')
def stream_progress(job_id):
def gen():
while True:
update = redis.brpop(f'updates:{job_id}', timeout=30)
if not update:
yield 'data: {"status": "timeout"}\n\n'
break
yield f'data: {update[1].decode()}\n\n'
if 'done' in update[1].decode():
break
return StreamingResponse(gen(), media_type='text/event-stream')İş Yaşam Süreleri
İş kayıtlarını sonsuza kadar saklamayın:
redis.expire(f'job:{job_id}', 86400) # 1 dayYeniden Denemeler
Geçici hatalar otomatik olarak yeniden denenir; kalıcı hatalar insan incelemesi için bir DLQ'ya gönderilir:
import time
def retry(retries=3, retry_backoff=True):
def decorator(func):
def wrapper(*args, **kwargs):
for attempt in range(1, retries + 1):
try:
return func(*args, **kwargs)
except Exception as e:
print(f'attempt {attempt} failed: {e}')
if attempt == retries:
raise
return None
return wrapper
return decorator
attempts = {'n': 0}
@retry(retries=3, retry_backoff=True)
def run_agent_job(job_id):
attempts['n'] += 1
if attempts['n'] < 3:
raise RuntimeError('transient error')
return f'job {job_id} done'
print(run_agent_job('job-1'))
Eşzamanlılık Sınırları
GPU/API maliyetlerini denetlemek için eşzamanlı çalışanları sınırlayın:
rq worker --burst --max-jobs 1000 --queue agent
# Or per-queue concurrency in Temporal worker config.Kullanıcı Başına Kotalar
Kullanıcı başına devam eden işleri izleyin:
key = f'inflight:{user_id}'
if redis.scard(key) >= 5:
raise HTTPException(429, 'Too many in-flight jobs')
redis.sadd(key, job_id)Gözlemlenebilirlik
Her işi uçtan uca izleyin. Aralıkları job_id ve user_id ile etiketleyin. Başarısız işler otomatik olarak bir destek kaydı veya uyarı oluşturmalıdır.
Durum Yoklama Kalıbı
Uzun süren aracılar için gönderim/durum yoklama kalıbı neden kullanılır?
Özet
İşi POST ile gönderin, kimliği döndürün, çalışan kuyruktan işlesin, istemci yoklama yapsın. Basit işler için RQ/Celery; durum bilgisi taşıyan iş akışları için Temporal kullanın. Yaşam süreleri, yeniden denemeler, kotalar ve izler ekleyin.
Sıkça Sorulan Sorular
“Eşzamansız İş Akışları ve Arka Plan İşleri” dersi ücretsiz mi?
Evet — “Eşzamansız İş Akışları ve Arka Plan İşleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Agents kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Agents kursu toplamda 4 dersten oluşur.
“Eşzamansız İş Akışları ve Arka Plan İşleri” dersinde ne öğreneceğim?
Uzun süre çalışan aracılar kuyruklara (Celery, RQ, Temporal) ihtiyaç duyar; bir iş kimliği döndürün ve durumu yoklayın. AI Agents ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
AI Agents öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te AI Agents, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Eşzamansız İş Akışları ve Arka Plan İşleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu AI Agents dersinde kod yazıp çalıştırabilir miyim?
Evet. Her AI Agents dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Aracıları API Arkasında Sunma
- Eşzamansız İş Akışları ve Arka Plan İşleri
- Hız Sınırlama ve Kota Yönetimi
- Aracılar için Mavi-Yeşil ve Kanarya Dağıtımları