scrapyd schedule.json setting 传入多个值问题
使用案例:
importrequests 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)-aScrapysettingtousewhenrunningthespider
setting是字符串,那么多个字符串该如何呢。
通过源码site-packages/scrapyd/webservice.py
classSchedule(WsResource): defrender_POST(self,txrequest): args=native_stringify_dict(copy(txrequest.args),keys_only=False) settings=args.pop('setting',[]) settings=dict(x.split('=',1)forxinsettings) args=dict((k,v[0])fork,vinargs.items()) project=args.pop('project') spider=args.pop('spider') version=args.get('_version','') spiders=get_spider_list(project,version=version) ifnotspiderinspiders: return{"status":"error","message":"spider'%s'notfound"%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']
结果真的可以。对于比较复杂的设置,下次有需求再研究吧。
总结
以上所述是小编给大家介绍的scrapydschedule.jsonsetting传入多个值问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!