تضمين قائمة وكلاء وتحميلها في مشروع Scrapy منشور
ضمّن مورد قائمة وكلاء Scrapy في التوزيع وحمّله حسب موقع الحزمة بدلًا من دليل العمل المنشور.
ملف الوكلاء المجاور لنسخة تطوير ليس موجودًا تلقائيًا في حزمة الزاحف المنشورة. هناك مهمتان: تضمين البايتات في التوزيع، ثم العثور عليها في الحزمة المثبّتة.
في مشروع Setuptools يحتوي على crawl_app/resources/proxies.txt داخل حزمة Python الخاصة به، يمكن لمدخل pyproject.toml تضمينه:
[tool.setuptools.package-data]
crawl_app = ["resources/*.txt"]
ادمج ذلك مع إعدادات الحزمة الموجودة في المشروع. لأي واجهة بناء مختلفة واجهتها الخاصة لتضمين البيانات.
بالنسبة للوسيط middleware الذي يمكنه استهلاك سلاسل نقاط النهاية، يستطيع Python 3.11+ قراءة مورد الحزمة مباشرة:
from importlib.resources import files
text = files('crawl_app').joinpath('resources', 'proxies.txt').read_text(
encoding='utf-8'
)
proxy_urls = [line.strip() for line in text.splitlines() if line.strip()]
استخدم اسم الحزمة الفعلي وتحقق من صيغة URL المتوقعة في القارئ. لبيانات نقاط النهاية العامة القابلة للتوزيع، استخدم عناوين من قائمة الوكلاء المجانية بالبروتوكول وصيغة URL اللذين يتوقعهما الوسيط. لا يعتمد البحث على دليل العمل الحالي للنشر.
قد يتطلب إعداد PROXY_LIST من طرف ثالث مسار نظام ملفات بدلًا من هذه السلاسل. عند استخدام importlib.resources.as_file لتلك الواجهة، أبقِ سياقه مفتوحًا طالما يحتاج الوسيط إلى الملف المستخرج. إرجاع مسار مؤقت بعد إغلاق السياق قد يفقد المورد.
احتفظ بقوائم الإنتاج التي تحمل بيانات اعتماد في مخزن الأسرار أو الإعدادات المقصود للنشر. بيانات الحزمة مناسبة لبيانات نقاط النهاية القابلة للتوزيع، وليست افتراضًا بأن كل ما يُحزم مع الشيفرة يبقى خاصًا.