scrapydschedule.jsonsetting传入多个值问题

使用案例:

台前ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!

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


分享文章:scrapydschedule.jsonsetting传入多个值问题
链接分享:http://hbruida.cn/article/pgjcce.html