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