scrapy專案在Linux伺服器上的部署
阿新 • • 發佈:2019-02-19
scrapy專案在Linux伺服器上部署時,如果不想採用scrapyd(官方文件)的方式。啟動命令如果使用scrapy crawl {spider},執行一次就會停止,如果使用死迴圈的cmdline方式也是執行一次就停止。
最後在網上看到使用subprocess.Popen()方法,這個方法可以保證能夠迴圈執行。
但是,如果需要在liunx伺服器上跑的話,還是需要加上shell=True這個引數。不然,它會報找不到這個命令。
下面是我的scrapy專案的start.py檔案的改動,不想使用scrapyd部署的可以看一下,如果有問題或者有好的辦法,希望能與我溝通,共同學習。
import subprocess
import time
import os
CYCLE_TIME = 30
spiders = ['spider1', 'spider2', 'spider3', 'spider4']
cmd = 'scrapy crawl {}'
i = 0
while True:
for s in spiders:
subprocess.Popen(cmd.format(s), shell=True if os.name == 'posix' else False)
i += 1
print("第{}輪執行".format(i))
time.sleep(CYCLE_TIME)
# os.name 在windows上是nt, linux上是posix
# 啟動命令可以採用nohup python -u start.py &