امنح كل وكيل aiohttp ميزانية تزامن خاصة به
حدّ من العمل الجاري لكل وكيل مختار مع الاحتفاظ بحدود تجمع اتصالات aiohttp وتنظيف الاستجابات.
قد تحتوي مجموعة الوكلاء على نقاط نهاية بقدرات مختلفة جدًا. السماح بخمسين عملية على مستوى التطبيق لا يمنع تسعًا وأربعين منها من اختيار الوكيل نفسه.
إذا كانت السياسة «أربع عمليات جارية كحد أقصى عبر كل وكيل مختار»، فعبر عن تلك السياسة مباشرة. احتفظ بإشارة مرور لكل هوية وكيل، واحصل عليها حول العمل الذي يستهلك قدرة الوكيل.
limits = {proxy: asyncio.Semaphore(4) for proxy in proxy_urls}
async def fetch(session, proxy, url):
async with limits[proxy]:
async with session.get(url, proxy=proxy) as response:
return await response.read()يفترض هذا المخطط أن asyncio قد استُورد وأن عناوين URL للوكلاء قد تم التحقق منها. للطلبات العامة على مسار وكيل عام مسموح، توفر قائمة وكلاء HTTP مرشحين لعناوين URL الوكيل في aiohttp. ينبغي للتطبيق الحقيقي أيضًا ضبط مهلة الطلب الخاصة به وتحديد مقدار بيانات الاستجابة التي يحتاجها. قراءة ملف كبير بالكامل في الذاكرة قرار منفصل بشأن الموارد.
احتفظ بالتصريح للجزء المكلف
تحرير إشارة المرور فور وصول ترويسات الاستجابة قد يبطل الحد المقصود. قد يستمر جسم متدفق في استخدام الاتصال لفترة طويلة بعد ذلك. احتفظ بالتصريح حتى يُستهلك الجسم أو تُغلق الاستجابة وفقًا لسير عمل التطبيق.
مديرو السياق المتداخلون يجعلون التنظيف مرئيًا عندما يترك استثناء أو إلغاء العملية. تجنب الحصول يدويًا والتحرير فقط في أسفل دالة ناجحة.
حدود الاتصال تجيب على سؤال آخر
تحدد حدود موصل aiohttp الاتصالات وفقًا للقواعد الموثقة للموصل. تبقى مفيدة إلى جانب إشارة مرور التطبيق. حد الاتصال لكل وجهة لا يعبر، باسمه وحده، عن ميزانية مشتركة بين جميع الوجهات المخصصة لوكيل واحد.
ميّز أيضًا بين التزامن ومعدل الطلبات. أربعة طلبات طويلة العمر وأربعة طلبات قصيرة جدًا تستخدم نفس سماح التزامن بينما تنتج معدلات طلبات في الثانية مختلفة. قد تحتاج خدمة ذات سياسة معدل إلى ضبط الإيقاع أو محدد معدل منفصل.
اختر معرّف وكيل مستقرًا وغير سري للسجلات والمقاييس. إذا أشار عنوانا URL يحملان بيانات اعتماد إلى نفس تجمع القدرات، فقرر ما إذا كان ينبغي أن يتشاركا ميزانية واحدة. على العكس، يمكن للمنافذ أو الحسابات المختلفة أن تمثل حدودًا منفصلة عندما يوثق المشغل ذلك.
عندما تنخفض الإنتاجية، افحص أين ينتظر العمل: إشارة المرور الخاصة بك، أو الموصل، أو إعداد اتصال الوكيل، أو قراءات الاستجابة. رفع كل الحدود دفعة واحدة يجعل هذا التمييز أصعب وقد ينقل قائمة الانتظار إلى وكيل لا تتحكم فيه.