<!-- Canonical URL: https://ask.atlascloud.ai/ar/replace-replicate-prediction-polling-and-webhooks -->

# كيف تستبدل استطلاع تنبؤات Replicate وخطافات الويب في تطبيق قائم؟

> ضع سجلاً لمهمة غير متزامنة ومحايدة للمزود بين المنتج وواجهة النموذج. اجعل webhook المتحقق منه أو عامل استطلاع محدوداً يحدّثان المنهي ذاته بصورة متكررة آمنة، ووحّد الحالات وانسخ الملفات المكتملة إلى تخزين دائم.

ضع طبقة مهام محايدة للمزود بين التطبيق وواجهة الاستدلال لاستبدال استطلاع Replicate وخطافات الويب. وحّد الإنشاء والحالة والإلغاء وأحداث الاكتمال وحفظ المخرجات حتى لا يعتمد المنتج على كائنات Replicate أو عناوينها.

لا تبدّل عنوان callback فقط داخل المنتج. عرّف أولاً العقد غير المتزامن الذي يحتاجه التطبيق.

## توثيق السلوك الحالي

يعيد الإنشاء غير المتزامن في Replicate معرّف تنبؤ وحالة وعناوين مساعدة. يمكن للتطبيق استطلاع `urls.get` أو تلقي POST من webhook أو استهلاك أحداث الخادم. سجّل المسار المستخدم وسلوك المنتج عند كل انتقال.

| مفهوم Replicate | البديل في التطبيق |
|---|---|
| معرّف التنبؤ | معرّف مهمة المزود ومعرّف داخلي |
| `starting`، `processing` | `queued`، `running` |
| `succeeded` | `completed` |
| `failed`، `canceled` | `failed`، `canceled` |
| `urls.get` | دالة حالة في المحول |
| حمولة Webhook | حدث اكتمال موحّد |
| عنوان الإخراج | أصل دائم يملكه التطبيق |

احفظ حالة المزود الخام منفصلة عن الحالة الموحدة لتشخيص اختلافات دورة الحياة.

## إدخال سجل مهمة داخلي

أنشئ صف قاعدة البيانات قبل استدعاء المزود الجديد:

```json
{
  "job_id": "job_01J...",
  "provider": "target",
  "provider_job_id": null,
  "state": "creating",
  "attempt": 1,
  "output_assets": []
}
```

استخدم `job_id` الداخلي في الواجهة والطوابير والإشعارات، ثم أضف معرّف المزود بعد الإنشاء. يمنع مفتاح التكرار الآمن إعادة الشبكة من بدء مهمتين مدفوعتين.

## استبدال الاستطلاع بعامل محدود

إذا أتاح الهدف قراءة المهمة من دون webhook، فانقل الاستطلاع إلى عامل خلفي. استخدم تراجعاً أسياً مع تفاوت وموعد نهائي وفاصل أقصى. توقف عند كل حالة نهائية، ومنها الإلغاء.

لا تستطلع من المتصفح. يستمر عامل الخادم بعد إغلاق علامة التبويب، ويدير الحدود مركزياً، ويحفظ التحولات ضمن معاملات.

## استبدال خطافات الويب بأحداث متحقق منها

أبقِ المعالج صغيراً:

* تحقق من التوقيع أو السر قبل التحليل.
* أزل التكرار حسب الحدث أو المهمة والحالة.
* أكّد الاستلام سريعاً وضع المعالجة في طابور.
* اجلب المهمة الرسمية إذا كانت الحمولة جزئية.
* اقبل التسليم المتكرر وغير المرتب.

تدعم Replicate مرشحات start وoutput وlogs وcompleted. قد يرسل الهدف أحداثاً نهائية فقط، فلا تخترع تقدماً دقيقاً من حالات قليلة.

## استخدام مسار اكتمال واحد

يستدعي الاستطلاع وwebhook المنهي المتكرر الآمن نفسه. يقفل المهمة الداخلية، ويتحقق من المعرّف الخارجي، ويحفظ الحالة النهائية، وينسخ الملفات إلى تخزين دائم، ويصدر حدث تطبيق واحداً.

بهذا لا تتكرر الإشعارات إذا وصل webhook والاستطلاع الأخير معاً.

## حفظ الملفات قبل اختفائها

توضح Replicate أن ملفات الإدخال والإخراج لتنبؤات API تُحذف بعد مدة محدودة. قد يستخدم الهدف مدة احتفاظ أو صلاحية URL مختلفة. عامل عنوان المزود كوسيلة تسليم لا كتخزين دائم.

نزّل المخرجات سريعاً، وتحقق من النوع والحجم، وافحصها عند الحاجة، وخزّنها تحت مفتاح تملكه مع بصمتها. قدم للعملاء عنوانك الثابت.

## اختبار الفشل والاسترداد

اختبر تأخر استجابة الإنشاء، وwebhook المكرر أو المفقود، و429 و5xx، وتعارض الإلغاء، والعناوين المنتهية، والحمولات غير الصالحة، وإعادة تشغيل العامل أثناء المهمة.

شغّل المحولين في وضع الظل بمدخلات آمنة وقارن الحالات النهائية وعدد الأصول قبل نقل نسبة صغيرة من الإنتاج.

## الخلاصة

البديل الدائم هو عقد داخلي لمهمة غير متزامنة، لا callback موزعة في المنتج. وحّد الحالات، واجعل الإنهاء متكرر التنفيذ بأمان، واحفظ الملفات فوراً، ووجّه webhook المتحقق منه أو العامل المحدود إلى مسار الاكتمال نفسه.

## FAQ

### هل ينبغي للمتصفح استطلاع واجهة المزود البديل مباشرة؟

يفضل استخدام عامل على الخادم. فهو يستمر بعد إغلاق المتصفح، ويدير الحدود وإعادة المحاولة مركزياً، ويحدّث الحالة الداخلية باتساق.

### كيف تُربط حالات تنبؤ Replicate؟

اربطها بدورة داخلية صغيرة مثل creating وqueued وrunning وcompleted وfailed وcanceled، مع الاحتفاظ بحالة المزود الأصلية للتشخيص.

### كيف أمنع معالجة webhook مرتين؟

تحقق من المصدر، وأزل التكرار حسب الحدث أو المهمة والحالة، ووجّه webhook والاستطلاع إلى منهي واحد معاملاتُه آمنة ومتكررة.

### ماذا لو لم يقدم المزود الجديد خطافات ويب؟

استخدم عاملاً خلفياً بتراجع أسي وتفاوت عشوائي وموعد نهائي ومعالجة صريحة لكل الحالات النهائية.

### هل يمكن عرض عناوين إخراج المزود بصورة دائمة؟

لا تفترض أنها دائمة. نزّل المخرجات سريعاً وقدم عناوين أصول تملكها مع ضوابط الوصول الخاصة بك.

### ما حالات الفشل التي ينبغي اختبارها؟

اختبر الأحداث المكررة أو المفقودة، وحدود المعدل، والأخطاء المؤقتة، وتعارض الإلغاء، والمخرجات المنتهية، والحمولات غير الصالحة، وإعادة تشغيل العامل.
