انتهت مهلة معالجة المستند، لا تدع مهمة واحدة تسحب الدفعة بأكملها للأسفل

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

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

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

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

استنتاج جملة واحدة

يجب تقسيم مهلة المهمة المجمعة إلى ثلاثة أشياء: التوقف عن الانتظار، وإيقاف التنفيذ، ووضع علامة على المنتج على أنه غير قابل للتسليم. لا يمكن اعتبار "مهلة الانتظار" مباشرة على أنها "تم إنهاء المهمة".

حالتكالممارسات الموصى بهاسبب
أريد فقط إيقاف الصفحة أو قائمة الانتظار من التعثرتوقف عن الانتظار واستفسر عن حالة المهمة المعروفةالتوقف عن الانتظار لا يعني أن المهمة البعيدة قد انتهت
تقلق بشأن عمليات الخلفية التي تستهلك الذاكرةتأكد من اكتمال الإنهاء وعزله بمجموعة عمليات أو حاوية أو كائن وظيفة إذا لزم الأمرsubprocess.run(timeout=...) صالح للعمليات التابعة المباشرة ولا يمكن تعميمه على حقيقة أن شجرة العملية بأكملها قد تم تنظيفها
قد يكون المنتج منتجًا نصف نهائيقم بوضع علامة على المنتج المؤقت على أنه غير قابل للتسليم ولا تشارك الحالة مع النتيجة الرسميةلا يمكن لنتيجة الوصول المتأخر بعد انتهاء المهلة تغيير المهمة مباشرةً إلى النجاح.
المهلات المتكررة لنفس الإدخالعزل العينات والتحقق من التعقيد دون إعادة المحاولة بشكل غير محدودتكون إعادة المحاولة منطقية فقط إذا كان الفشل قابلاً للاسترداد وكانت المكالمة غير فعالة بشكل مناسب.

انتظار المهلة لا يعني إنهاء العمل

المهلة تؤثر فقط على المتصل

يمكن لـ subprocess.run(timeout=...) أن تنتهي مهلة العمليات التابعة المباشرة، ولكنها لا تضمن تنظيف أي شجرة عمليات. ستؤثر أنظمة التشغيل المختلفة وأساليب بدء التشغيل وسلوك عملية الحفيد على النتائج. لمعرفة السلوكيات ذات الصلة، يرجى الرجوع إلى سلوك المهلة لعملية بايثون الفرعية.

تتطلب بيئة الإنتاج استراتيجية العزل

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

قم أولاً بكتابة عقد حالة المهمة بشكل واضح

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

from dataclasses import dataclass

@dataclass(frozen=True)
class Decision:
    state: str
    deliver: bool
    terminate_requested: bool

def decide(now, deadline, worker_done, artifact_valid):
    if now >= deadline:
        return Decision("timed_out", False, not worker_done)
    if not worker_done:
        return Decision("processing", False, False)
    if not artifact_valid:
        return Decision("invalid_artifact", False, False)
    return Decision("verified", True, False)

assert decide(9, 10, False, False).state == "processing"
assert decide(10, 10, False, False).terminate_requested
assert not decide(11, 10, True, True).deliver
assert decide(9, 10, True, True).deliver
assert decide(9, 10, True, False).state == "invalid_artifact"

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

📊 المقارنة الأساسية

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

ما هو الدليل المتبقي بعد انتهاء المهلة؟

بعد انتهاء المهلة، لا يمكن تسجيل مهلة واحدة فقط في السجل. يمكن أن تساعدك المعلومات التالية في تحديد مكان المشكلة:

ما تحتاج إلى معرفتهيستخدميلاحظ
مرحلة المهلةالتمييز بين التنزيل والتحليل والترجمةتذكر ليس مجرد مهلة واحدة
هل تم تأكيد الإنهاء؟منع بقايا العمل في الخلفيةإنهاء الطلب لا يعني الخروج
هوية المنتج المؤقتةتجنب التسليم الخاطئ للمنتجات شبه النهائيةلا يشارك الحالة مع النتائج الرسمية
عدد مرات إعادة المحاولةالسيطرة على الميزانية العامةلا يمكن استعادة الوقت غير المحدود في كل مرة

إعادة المحاولة ليست خطوة تالية تلقائية

تحقق أولاً من استنفاد الموارد بشكل متكرر في نفس الخطوة

إذا كان نفس الإدخال يستهلك الموارد في نفس الخطوة في كل مرة، فيجب عليك عزل العينة واستكشاف مشكلة التعقيد وإصلاحها بدلاً من الاستمرار في إعادة المحاولة.

التمييز بين نوعين من المطالبات

يجب أن يكون المستخدمون قادرين على التمييز بين حالتين:

  • الخدمة مشغولة، جاري إعادة المحاولة: يمكنك الانتظار.
  • الإدخال غير مدعوم ويحتاج إلى معالجة: يلزم التدخل اليدوي أو استبدال الإدخال.

🎯 ما هي الطريقة المناسبة لك؟

إذا كنت تقوم بمعالجة مجموعات كبيرة من المستندات

حدد موعدًا نهائيًا مستقلاً لكل مهمة. بعد انتهاء مهلة مهمة واحدة، فإنها تحدد نفسها فقط ولا توقف الدفعة بأكملها.

إذا كنت قلقًا بشأن تسرب الموارد

بعد انتهاء المهلة، تأكد من اكتمال الإنهاء بالفعل وعزله على مستوى الحاوية أو مجموعة العمليات. لا تعتمد فقط على مهلة العملية الفرعية المباشرة.

إذا كنت تريد الاتصال بمنصة ترجمة عبر الإنترنت

يجب تمثيل وقت انتظار العميل وحالة معالجة النظام الأساسي وحالة تنزيل الملف بشكل منفصل. تحقق من المهام المعروفة قبل النقر مرة أخرى لتجنب الاستهلاك المتكرر.

❓ الأسئلة الشائعة (الأسئلة الشائعة)

1. إذا تمت إضافة مهلة إلى الطلب، فلماذا يجب إيقاف التنفيذ؟

بعد انتهاء المهلة، قد تظل عملية المعالجة قيد التشغيل في الخلفية وتشغل الذاكرة. لن يؤدي إيقاف الانتظار إلى تحرير هذه الموارد تلقائيًا.

2. هل ستفشل المهمة بالتأكيد بعد انتهاء المهلة؟

غير مؤكد. ومع ذلك، فإن النتيجة المتأخرة بعد المهلة لا يمكن أن تغير المهمة بشكل مباشر إلى النجاح، ويجب تحديدها وفقًا لعقد الحالة.

3. متى يكون من المناسب المحاولة مرة أخرى؟

تكون إعادة المحاولة منطقية فقط إذا كان سبب الفشل قابلاً للاسترداد وكانت المكالمة غير فعالة بشكل مناسب. إذا كان نفس المدخلات يستهلك الموارد في نفس الخطوة في كل مرة، فيجب عزله والتحقيق فيه أولاً.

4. ما هو الدليل الذي يجب تسجيله بعد انتهاء المهلة؟

قم على الأقل بتسجيل مرحلة المهلة، وما إذا تم تأكيد الإنهاء، وهوية المنتج المؤقت وعدد مرات إعادة المحاولة.

📝 ملخص

مفتاح المهلة هو التعامل مع "إيقاف الانتظار" و"إيقاف التنفيذ" و"ما إذا كان يمكن تسليم المنتج" بشكل منفصل. إذا كانت حالة المهمة واضحة، فلن يتم تأخير الدفعة بملف واحد.

جربه الآن: قم بتحميل المستند لبدء الترجمة، مع الاحتفاظ بالتخطيط الأصلي

تاريخ التحديث: 2026-11-15