Inclure et charger une liste de proxys dans un projet Scrapy déployé
Incluez une ressource de liste de proxys Scrapy dans la distribution et chargez-la par l’emplacement du paquet plutôt que par le répertoire de travail déployé.
Un fichier de proxys à côté d’une copie de développement n’est pas automatiquement présent dans le paquet déployé du crawler. Il y a deux tâches : inclure les octets dans la distribution, puis les retrouver dans le paquet installé.
Pour un projet Setuptools dont le paquet Python contient crawl_app/resources/proxies.txt, une entrée pyproject.toml peut l’inclure :
[tool.setuptools.package-data]
crawl_app = ["resources/*.txt"]
Fusionnez cela avec la configuration de paquet existante du projet. Un autre backend de build dispose de sa propre interface d’inclusion de données.
Pour un middleware capable de consommer des chaînes d’endpoint, Python 3.11+ peut lire directement la ressource du paquet :
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()]
Utilisez le nom réel du paquet et validez le format d’URL attendu dans le lecteur. Pour des données d’endpoint publiques distribuables, utilisez des adresses de la liste de proxys gratuits dans le protocole et le format d’URL attendus par le middleware. La recherche ne dépend pas du répertoire de travail actuel du déploiement.
Un paramètre PROXY_LIST tiers peut exiger un chemin de système de fichiers plutôt que ces chaînes. Lorsque vous utilisez importlib.resources.as_file pour cette interface, gardez son contexte ouvert aussi longtemps que le middleware a besoin du fichier extrait. Renvoyer un chemin temporaire après la fermeture du contexte peut faire perdre la ressource.
Conservez les listes de production porteuses d’identifiants dans le stockage de secrets ou de configuration prévu pour le déploiement. Les données de paquet conviennent aux données d’endpoint distribuables, pas à l’hypothèse que tout ce qui est empaqueté avec du code reste privé.