وصف المشكلة/الخطأ/السؤال
مرحباً،
قامت فريقي ببناء موقع ويب مبني على Azure. إنه في الأساس واجهة مستخدم تقوم عند الطلب بتشغيل سير عمل n8n وإرجاع النتيجة. ومع ذلك، إذا استغرق سير عمل n8n أكثر من دقيقتين للتشغيل، يظهر الموقع خطأ. سير عمل n8n نفسه لا توجد به مشاكل في التشغيل بشكل مستقل لأكثر من دقيقتين، فقط يكون هناك مشكلة عند التواصل مع الموقع. هل لديكم أي أفكار حول كيفية حل هذا؟ أخبروني إذا كنتم بحاجة إلى أي معلومات إضافية.
مرحباً @CSIS_Dev
المشكلة هي أن Azure لديها “مؤقت” مدمج لجميع اتصالات الويب. عندما يطلب موقعك من n8n القيام بشيء ما، يحافظ Azure على الاتصال مفتوحاً وينتظر الرد. ومع ذلك، إذا استغرق n8n أكثر من دقيقتين للرد، يفترض Azure أن هناك خطأ ما ويقطع الاتصال تلقائياً لتوفير الموارد، وهذا هو السبب في ظهور خطأ على موقعك على الرغم من أن n8n لا يزال يعمل.
لا يمكنك إصلاح هذا بسهولة بزيادة المؤقت فحسب، لأن هذه الحدود مدمجة بعمق في الطريقة التي يتعامل بها Azure مع حركة المرور على الشبكة. الاعتماد على اتصال طويل الأمد واحد غير مستقر لأن أي اهتزاز صغير في اتصال الإنترنت خلال تلك الدقيقتين سيؤدي أيضاً إلى فشل العملية بأكملها.
الحل الأفضل هو تغيير الحوار بين موقعك و n8n. بدلاً من انتظار الموقع على الخط للحصول على الإجابة النهائية، يجب أن يرد n8n على الفور برسالة تقول: “لقد بدأت العمل؛ إليك معرّف التتبع الخاص بك.” يمكن لموقعك بعد ذلك عرض دوار التحميل والتحقق كل بضع ثوانٍ لمعرفة ما إذا انتهى العمل، مما يسمح بتسليم النتيجة دون الوصول إلى حد الدقيقتين.
لتنفيذ هذا، تحتاج فعلاً إلى سير عمل منفصل: أحدهما لتشغيل العمل وإرجاع المعرّف على الفور، والآخر للسماح للموقع بالتحقق من انتهاء العمل. يجب أن يبدو مثل ما يلي:
سير العمل 1: مشغّل المعالج
سير العمل 2: فاحص الحالة (نقطة نهاية الاستقصاء)
أهلا وسهلا في مجتمع n8n @CSIS_Dev
أوصيك بسير العمل هذا، تواصل معي إذا كان لديك أي أسئلة.