如果Scrapy Spider已经在运行,请阻止它开始

时间:2018-05-20 16:44:39

标签: python scrapy

我正在使用scrapyd来安排蜘蛛,有时,根据数据量,当实例已经运行时,将启动蜘蛛。我想阻止这个。我试过写一个锁文件并检查它,但我遇到了问题,因为我项目中的每个蜘蛛都在实现锁定。这就是我所拥有的:

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

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

我理解这个问题是因为我在MySpider类的实例中创建了锁,但我不知道在哪里放置它。我在想一个中间件组件,但不确定这是否有意义。想法?

1 个答案:

答案 0 :(得分:0)

使用kivy.support api。

listjobs.json

响应是这样的

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"}]} 列表中运行。 资料来源:http://scrapyd.readthedocs.io/en/stable/api.html#listjobs-json