Scrapy - 如何检查蜘蛛是否正在运行

时间:2018-02-21 23:38:21

标签: python bash scrapy ubuntu-16.04

我有Scrapy蜘蛛,我每小时使用bash脚本和crontab运行。

蜘蛛的运行时间约为50分钟,但可能超过一小时。

我想要的是检查蜘蛛是否正在运行,只有不运行,开始新的爬行。

BASH SCRIPT

#!/usr/bin/env bash

source /home/milano/.virtualenvs/keywords_search/bin/activate
cd /home/milano/PycharmProjects/keywords_search/bot

# HERE I WANT TO CHECK, WHETHER THE PREVIOUS CRAWLING ALREADY STOPPED, IF NOT, DO NOTHING

scrapy crawl main_spider

我唯一想到的就是使用telnet

如果它可以连接 - telnet localhost 6023,这意味着蜘蛛仍在运行,否则我可以运行蜘蛛。

1 个答案:

答案 0 :(得分:1)

您需要某种锁定机制。

从bash实现原子锁的最佳方法是使用mkdir并检查结果代码以了解是否获得了锁。

以下是更深入的解释:http://wiki.bash-hackers.org/howto/mutex

当然,你总是可以选择更脏的方法,例如grep on process names或类似的东西。

你也可以锁定scrapy本身,为共享资源添加一个简单的中间件检查......有很多方法可以做到这一点:)