def render_POST(self, txrequest): args = native_stringify_dict(copy(txrequest.args), keys_only=False) project = args['project'][0] version = args['version'][0] self._delete_version(project, version) UtilsCache.invalid_cache(project) return {"node_name": self.root.nodename, "status": "ok"}
def render_POST(self, txrequest): eggf = BytesIO(txrequest.args.pop(b'egg')[0]) args = native_stringify_dict(copy(txrequest.args), keys_only=False) project = args['project'][0] version = args['version'][0] self.root.eggstorage.put(eggf, project, version) spiders = get_spider_list(project, version=version) self.root.update_projects() UtilsCache.invalid_cache(project) return { "node_name": self.root.nodename, "status": "ok", "project": project, "version": version, "spiders": len(spiders) }
def test_get_spider_list(self): # mybot.egg has two spiders, spider1 and spider2 self.add_test_version('mybot.egg', 'mybot', 'r1') spiders = get_spider_list('mybot', pythonpath=get_pythonpath_scrapyd()) self.assertEqual(sorted(spiders), ['spider1', 'spider2']) # mybot2.egg has three spiders, spider1, spider2 and spider3... # BUT you won't see it here because it's cached. # Effectivelly it's like if version was never added self.add_test_version('mybot2.egg', 'mybot', 'r2') spiders = get_spider_list('mybot', pythonpath=get_pythonpath_scrapyd()) self.assertEqual(sorted(spiders), ['spider1', 'spider2']) # Let's invalidate the cache for this project... UtilsCache.invalid_cache('mybot') # Now you get the updated list spiders = get_spider_list('mybot', pythonpath=get_pythonpath_scrapyd()) self.assertEqual(sorted(spiders), ['spider1', 'spider2', 'spider3']) # Let's re-deploy mybot.egg and clear cache. It now sees 2 spiders self.add_test_version('mybot.egg', 'mybot', 'r3') UtilsCache.invalid_cache('mybot') spiders = get_spider_list('mybot', pythonpath=get_pythonpath_scrapyd()) self.assertEqual(sorted(spiders), ['spider1', 'spider2']) # And re-deploying the one with three (mybot2.egg) with a version that # isn't the higher, won't change what get_spider_list() returns. self.add_test_version('mybot2.egg', 'mybot', 'r1a') UtilsCache.invalid_cache('mybot') spiders = get_spider_list('mybot', pythonpath=get_pythonpath_scrapyd()) self.assertEqual(sorted(spiders), ['spider1', 'spider2'])