הכללה וטעינה של רשימת פרוקסי בפרויקט Scrapy פרוס
כללו משאב רשימת פרוקסי של Scrapy בהפצה וטענו אותו לפי מיקום החבילה במקום לפי תיקיית העבודה הפרוסה.
קובץ פרוקסי לצד עותק פיתוח אינו נמצא אוטומטית בחבילה הפרוסה של הסורק. יש שתי משימות: לכלול את הבתים בהפצה, ואז למצוא אותם בחבילה המותקנת.
עבור פרויקט Setuptools עם crawl_app/resources/proxies.txt בתוך חבילת ה-Python שלו, רשומה ב-pyproject.toml יכולה לכלול אותו:
[tool.setuptools.package-data]
crawl_app = ["resources/*.txt"]
מזגו זאת עם תצורת החבילה הקיימת של הפרויקט. ל-backend בנייה אחר יש ממשק הכללת נתונים משלו.
עבור middleware שיכול לצרוך מחרוזות endpoint, 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 הצפוי בקורא. עבור נתוני endpoint ציבוריים הניתנים להפצה, השתמשו בכתובות מרשימת הפרוקסי החינמית בפרוטוקול ובפורמט ה-URL שה-middleware מצפה להם. החיפוש אינו תלוי בתיקיית העבודה הנוכחית של הפריסה.
הגדרת PROXY_LIST של צד שלישי עשויה לדרוש נתיב מערכת קבצים במקום מחרוזות אלה. בעת שימוש ב-importlib.resources.as_file עבור ממשק זה, השאירו את ההקשר שלו פתוח כל עוד ה-middleware זקוק לקובץ שחולץ. החזרת נתיב זמני לאחר סגירת ההקשר עלולה לאבד את המשאב.
שמרו רשימות ייצור הנושאות אישורים באחסון הסודות או התצורה המיועד לפריסה. נתוני חבילה מתאימים לנתוני endpoint הניתנים להפצה, לא להנחה שכל מה שנארז עם קוד נשאר פרטי.