JavaScript

超轻量级php框架startmvc

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

更新时间:2020-09-07 01:18:01 作者:startmvc
使用案例:importrequestsadder='http://127.0.0.1:6800'data={'project':'v1','version':'12379','setting':['ROBOTSTXT_O

使用案例:


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

scrapyd schedule.json setting 传值