首页 > 开发 > JS > 正文

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

2024-05-06 16:54:03
字体:
来源:转载
供稿:网友

使用案例:

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


注:相关教程知识阅读请移步到JavaScript/Ajax教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表