Включение и загрузка списка прокси в развёрнутом проекте Scrapy
Включите ресурс списка прокси Scrapy в дистрибутив и загружайте его по расположению пакета, а не по развёрнутому рабочему каталогу.
Файл прокси рядом с клоном разработки не обязательно присутствует в развёрнутом пакете сканера. Есть две задачи: включить байты в дистрибутив, а затем найти их в установленном пакете.
Для проекта Setuptools с crawl_app/resources/proxies.txt внутри его Python-пакета запись в pyproject.toml может включить его:
[tool.setuptools.package-data]
crawl_app = ["resources/*.txt"]
Объедините это с существующей конфигурацией пакета проекта. У другого бэкенда сборки есть собственный интерфейс включения данных.
Для промежуточного ПО, способного использовать строки 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. Поиск не зависит от текущего рабочего каталога развёртывания.
Сторонняя настройка PROXY_LIST может требовать пути файловой системы вместо этих строк. При использовании importlib.resources.as_file для этого интерфейса держите его контекст открытым, пока промежуточному ПО нужен извлечённый файл. Возврат временного пути после закрытия контекста может привести к потере ресурса.
Храните производственные списки с учётными данными в предназначенном для развёртывания хранилище секретов или конфигурации. Данные пакета подходят для распространяемых данных endpoint, а не для предположения, что всё, упакованное с кодом, остаётся приватным.