2017-05-30 8 views
2

J'ai implémenté une application Web qui déclenche des robots sprapy à l'aide de l'API scrapyd (l'application Web et scrapyd s'exécutent sur le même serveur).Utilisation de l'ID de travail scrapyd dans des pipelines scrapy

Mon application Web stocke les ID de travail renvoyés par scrapyd dans DB. Mes araignées stockent des éléments dans DB. Question: comment est-ce que je pourrais relier dans DB l'identification de travail émise par scrapyd et les articles lancés par le crawl?

Je pourrais déclencher mon araignée en utilisant un paramètre supplémentaire - disons un ID généré par mon application web - mais je ne suis pas sûr que ce soit la meilleure solution. A la fin, il n'y a pas besoin de créer cet ID si des problèmes scrapyd déjà ...

Merci pour votre aide

Répondre

2

La question devrait être formulée comme « Comment puis-je obtenir un identifiant de travail d'une tâche scrapyd en cours d'exécution? "

Lorsque scrapyd exécute une araignée, elle donne à l'araignée l'ID du travail en tant qu'argument. Devrait toujours être le dernier argument de sys.args. En outre, os.environ['SCRAPY_JOB'] devrait faire l'affaire

+1

Merci, vous avez raison! Je l'ai essayé en écrivant 'logger.debug (kwargs)' dans mon constructeur spider et l'ID de travail scrapyd est apparu avec cette clé 'DEBUG: {'_job': 'd584ea40454911e794246c4008a91422'}' – mouch