#!/usr/bin/python3
import sys
from scrapy.cmdline import execute
class main(): def run(self): argv = sys.argv argv.append('-s') argv.append('LOG_FILE=logs/' + argv[2] + '.log') argv.append('-s') argv.append('LOG_FORMAT=%(asctime)s [' + argv[2] + '][%(name)s] %(levelname)s: %(message)s') print(argv[3]) print(argv) sys.exit(execute(argv))
if name == 'main': main().run()
这是一个 main 类
下面我再有一个 supervisor 类
#!/usr/bin/python3 import sys import datetime from main import main import time from scrapy.cmdline import execute
if name == 'main': argv = sys.argv while 1: startTime = time.time() main().run() endTime = time.time() time.sleep(argv[3]) if argv[3] < endTime - startTime: logerror_path = "logs/logerror.log"
这是一个 supervisor 类,这里调用 main 类但是这里我 运行如下
scrapy crawl [options] <spider></spider>
scrapy crawl [options] <spider></spider>
crawl: error: running 'scrapy crawl' with more than one spider is no longer supported
如何才能在 main 中支持传一个 sleep 时间的参数?
1
PulpFunction 2018-12-24 10:52:32 +08:00
我用的 scrapyd 套了 scrapy,用了初始化方法传递了参数,想传啥传啥
|
2
Ewig OP @PulpFunction 怎么做的,能具体说说嘛
|
3
Ewig OP @PulpFunction
argv = sys.argv argv.append('-s') argv.append('LOG_FILE=logs/' + argv[2] + '.log') argv.append('-s') argv.append('睡眠时间为%s='%argv[3]) argv.append('-s') argv.append('LOG_FORMAT=%(asctime)s [' + argv[2] + '][%(name)s] %(levelname)s: %(message)s') print(argv) sys.exit(execute(argv)) 你说的是这? |
4
PulpFunction 2018-12-24 13:53:58 +08:00
你搜搜 scrapyd+scrapy+flask
我是搭建一个接口,flask 调用 scrapyd,scrapyd 调用 scrapy 没有用到 3 楼这些东西 |
5
PulpFunction 2018-12-24 14:01:41 +08:00
flask 调用 scrapyd 时候也是 api
发送一串类似{'project': 'ppp', '参数 1': 0, '参数 2': '参数 3','参数 4':xx,'参数':nn}到 scrapyd 你可以用{'project': '*', 'sleep': 10} 用这个参数只需要在*spider 类__init__文件中写 def __init__(self, sleep=0, **kwargs): 这个函数体里面就可以用 sleep 了 大概就是这样 |