scrapyd schedule.json setting 传入多个值
Posted apuyuseng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scrapyd schedule.json setting 传入多个值相关的知识,希望对你有一定的参考价值。
使用案例:
import requests adder=‘http://127.0.0.1:6800‘ data = ‘project‘:‘v1‘, ‘version‘:‘12379‘, ‘setting‘:[‘ROBOTSTXT_OBEY=True‘,‘CONCURRENT_REQUESTS=32‘] resp = requests.post(adder,data=data)
问题解决思路:
版本1.2文档中:
-
setting
(string, optional) - a Scrapy setting to use when running the spider
setting 是字符串,那么多个字符串该如何呢。
通过源码 site-packages/scrapyd/webservice.py
class Schedule(WsResource): def render_POST(self, txrequest): args = native_stringify_dict(copy(txrequest.args), keys_only=False) settings = args.pop(‘setting‘, []) settings = dict(x.split(‘=‘, 1) for x in settings) args = dict((k, v[0]) for k, v in args.items()) project = args.pop(‘project‘) spider = args.pop(‘spider‘) version = args.get(‘_version‘, ‘‘) spiders = get_spider_list(project, version=version) if not spider in spiders: return "status": "error", "message": "spider ‘%s‘ not found" % spider args[‘settings‘] = settings jobid = args.pop(‘jobid‘, uuid.uuid1().hex) args[‘_job‘] = jobid self.root.scheduler.schedule(project, spider, **args) return "node_name": self.root.nodename, "status": "ok", "jobid": jobid
可以发现 setting 在这里是list对象,且里面元素是字符,字符串必须包含=符号。
以此我们尝试传入setting:[‘DEBUG=True‘,‘HOST_NAME=axdda‘]
结果真的可以。对于比较复杂的设置,下次有需求再研究吧。
以上是关于scrapyd schedule.json setting 传入多个值的主要内容,如果未能解决你的问题,请参考以下文章
python3下scrapy爬虫(第十四卷:scrapy+scrapy_redis+scrapyd打造分布式爬虫之执行)