scrapyd schedule.json setting 传入多个值问题

时间:2021-05-26

使用案例:

import requestsadder='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 传入多个值问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章