使用案例:
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 傳入多個值問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。