وقتی بخشهای یک سند از قبل شناسه دارند، مسئله بعدی اجرای قابل ادامه است: پاسخها ممکن است با ترتیب متفاوت برسند، یک درخواست دوباره اجرا شود یا برنامه در میانه متوقف شود. در این راهنما مرزبندی متن و خلاصهسازی را تغییر نمیدهیم؛ هدف حفظ ترتیب خروجی و ادامه پردازش بدون از دستدادن یا تکرار رکورد است.
شناسه پایدار قبل از شروع کار
برای سند یک نسخه یا هش مشخص و برای هر بخش یک شماره ترتیب پایدار ثبت کنید. کلید پردازش میتواند ترکیبی از نسخه سند، شماره بخش، نسخه دستور و نسخه مدل باشد. اگر ورودی یا دستور عوض شد، کلید قبلی نباید بهاشتباه نتیجه تازه را پوشش دهد. ثبت فقط شماره آخر بدون هویت سند، ادامه روی فایل متفاوت را ممکن میکند.
پاسخ زودتر رسیده را جای بخش اول نگذارید
در اجرای همزمان، ترتیب پایان لزوماً ترتیب ورودی نیست. پاسخها را با شناسه بخش نگه دارید و خروجی نهایی را بر شماره ترتیب بسازید. پس از اعتبارسنجی و ثبت پایدار نتیجه، وضعیت همان بخش را کامل کنید. برای ثبت نتیجه و نقطه ادامه، سازوکار سازگار با ذخیرهساز لازم است؛ دو فایل بدون هماهنگی، تضمین ثبت یکباره نمیدهند. جمعآوری محدود خروجیها و ذخیره مرحلهای کمک میکند همه نتیجه در حافظه نماند.
تمرین توقف و ادامه
سه بخش ۱، ۲ و ۳ را فرض کنید. پاسخ ۲ زودتر میرسد و ذخیره میشود؛ پاسخ ۱ بعد از آن ثبت میشود و برنامه پیش از بخش ۳ متوقف میشود. در شروع دوباره، هر بخش با وضعیت خودش بررسی میشود، نه فقط بزرگترین شماره دیدهشده. دوبارهرسیدن نتیجه ۲ نباید ردیف تازه بسازد. انتظار نهایی ترتیب ۱، ۲، ۳ با یک خروجی ثبتشده برای هر کلید است. این مثال مصنوعی است و موفقیت یک سامانه واقعی را گزارش نمیکند.
مدل و ثبت نهایی را از هم جدا کنید
ممکن است برای یک بخش، درخواست مدل دوباره اجرا شود و حتی متن متفاوتی برگردد. کنترل تکرار باید تعیین کند کدام نتیجه معتبر ثبت میشود؛ ادعای «دقیقاً یک بار فراخوانی مدل» از این الگو به دست نمیآید. بخش ناموفق را جدا علامت بزنید و خروجی ناقص را کامل معرفی نکنید. پس از تغییر نسخه سند، پردازش را با شناسه تازه آغاز کنید.
| نسخه سند | ترتیب بخش | کلید پردازش نمونه | رویداد آموزشی | انتظار ثبت یا ادامه | نتیجه واقعی |
|---|---|---|---|---|---|
| doc-v1 | 2 | doc-v1:2:prompt-v1:model-v1 | پاسخ زودتر میرسد | با شناسه۲ ذخیره شود؛ جای بخش۱ ننشیند | |
| doc-v1 | 1 | doc-v1:1:prompt-v1:model-v1 | پاسخ دیرتر میرسد | با شناسه۱ ذخیره و در خروجی قبل از۲ مرتب شود | |
| doc-v1 | 3 | doc-v1:3:prompt-v1:model-v1 | پیش از ثبت متوقف شده | در ادامه فقط وضعیت این بخش دوباره بررسی شود | |
| doc-v1 | 2 | doc-v1:2:prompt-v1:model-v1 | نتیجه تکراری پس از ادامه | رکورد دوم برای همان کلید ایجاد نشود |
کاربرگ این تمرین
تمرین حفظ ترتیب و ادامه شامل نسخه سند، ترتیب بخش، کلید نمونه، رویداد آموزشی و انتظار ثبت یا ادامه است. ستون نتیجه واقعی خالی است؛ همین چهار رویداد را در محیط آزمایش تحت اختیار خودتان بررسی کنید.
محدودیت
الگوی کلید، ثبت پایدار و بازیابی در این متن طراحی آموزشی نویسنده است؛ مستندات asyncio تضمین idempotency یا ثبت تراکنشی نمیدهد. پیادهسازی به ذخیرهساز و کنترل همزمانی وابسته است.
برای پروژه پاسخگویی، ابتدا هدف و حدود اتصال را در آموزشهای اپرا مرور کنید و سپس دموی اپرا را ببینید. این متن ادعای ارائه زیرساخت مدل محلی از طرف اپرا ندارد.