Запретить запуск Scrapy Spider, если он уже запущен - PullRequest
0 голосов
/ 20 мая 2018

Я использую scrapyd для планирования пауков, и иногда, в зависимости от объема данных, паук будет запускаться, когда экземпляр уже запущен.Я хочу предотвратить это.Я попытался написать файл блокировки и проверить его, но у меня возникают проблемы, потому что каждый паук в моем проекте реализует блокировку.Вот что у меня есть:

class MySpider(Spider):
    name = "my-spider"

    lockFile(name + ".lock")
    ...

Я понимаю, что проблема в том, что я создаю блокировку в экземпляре класса MySpider, но я не знаю, где еще его разместить.Я думал о компоненте промежуточного программного обеспечения, но не уверен, что это имело бы смысл.Идеи?

1 Ответ

0 голосов
/ 20 мая 2018

Использовать listjobs.json api.

import requests
r = requests.get("http://localhost:6800/listjobs.json?project=myproject")

Ответ выглядит примерно так

{"status": "ok",
 "pending": [{"id": "78391cc0fcaf11e1b0090800272a6d06", "spider": "spider1"}],
 "running": [{"id": "422e608f9f28cef127b3d5ef93fe9399", "spider": "spider2", "start_time": "2012-09-12 10:14:03.594664"}],
 "finished": [{"id": "2f16646cfcaf11e1b0090800272a6d06", "spider": "spider3", "start_time": "2012-09-12 10:14:03.594664", "end_time": "2012-09-12 10:24:03.594664"}]}

Здесь вы можете проверить, работает ли паук в списке r.json()["running"].Источник: http://scrapyd.readthedocs.io/en/stable/api.html#listjobs-json

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...