مرحبا مؤخرا قمت بعمل سكربت يستخلص النتائج من موقع عبر مكتبة requests لكن الاستخلاص يكون بشكل متكرر بمعنى انني وضعت السكربت في حلقه تكرار لا تنتهي فبعد عدة محاولات يضهر هذا الخطأ :
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='itunes.apple.com', port=443): Max retries exceeded with url: /in/app/adobe-reader/id469337564?mt=8 (Caused by <class 'socket.gaierror'>: [Errno -2] Name or service not known)
فما هو الحل ؟؟
التعليقات
تحدث هذه المشكلة بسبب إرسال عدد كبير من الطلبات إلى الموقع، فيقوم الموقع بحظر عنوان حاسوب IP Address مؤقتًا (أو بشكل دائم في بعض الحالات)، وبالتالي لا يمكن للمكتبة requests الوصول إلى الموقع من الأساس وإكمال الطلب request، ولحل هذه المشكلة حاول أن تقوم بإرسال طلب واحد كل ثانية على أقصى تقدير لكي لا يتم حظرك بسبب الضغط على خادم الموقع بشكل كبير.
يجدر بالذكر أن رسالة الخطأ هذه لا توضح سبب المشكلة بشكل صريح، وقد تم فتح مشكلة issue في مستودع المكتبة نفسها على GitHub منذ عدة سنوات:
حاول إستخدام الدالة time.sleep لكي توقف الكود الخاص بك لمدة ثانية بين كل طلب والآخر، بالشكل التالي:
from time import sleep while True: requests.get(url) sleep(1) # إيقاف الكود لمدة ثانية واحدة