From 8360380db00b8b55ffe242bd4965f467530c113d Mon Sep 17 00:00:00 2001 From: Pablo Hoffman Date: Tue, 19 Aug 2014 10:30:25 -0300 Subject: [PATCH] removed scrapy-ws.py, moved to scrapy-jsonrpc package --- extras/scrapy-ws.py | 114 -------------------------------------------- 1 file changed, 114 deletions(-) delete mode 100755 extras/scrapy-ws.py diff --git a/extras/scrapy-ws.py b/extras/scrapy-ws.py deleted file mode 100755 index b95298d6e..000000000 --- a/extras/scrapy-ws.py +++ /dev/null @@ -1,114 +0,0 @@ -#!/usr/bin/env python -""" -Example script to control a Scrapy server using its JSON-RPC web service. - -It only provides a reduced functionality as its main purpose is to illustrate -how to write a web service client. Feel free to improve or write you own. - -Also, keep in mind that the JSON-RPC API is not stable. The recommended way for -controlling a Scrapy server is through the execution queue (see the "queue" -command). - -""" - -from __future__ import print_function -import sys, optparse, urllib, json -from six.moves.urllib.parse import urljoin - -from scrapy.utils.jsonrpc import jsonrpc_client_call, JsonRpcError - -def get_commands(): - return { - 'help': cmd_help, - 'stop': cmd_stop, - 'list-available': cmd_list_available, - 'list-running': cmd_list_running, - 'list-resources': cmd_list_resources, - 'get-global-stats': cmd_get_global_stats, - 'get-spider-stats': cmd_get_spider_stats, - } - -def cmd_help(args, opts): - """help - list available commands""" - print("Available commands:") - for _, func in sorted(get_commands().items()): - print(" ", func.__doc__) - -def cmd_stop(args, opts): - """stop - stop a running spider""" - jsonrpc_call(opts, 'crawler/engine', 'close_spider', args[0]) - -def cmd_list_running(args, opts): - """list-running - list running spiders""" - for x in json_get(opts, 'crawler/engine/open_spiders'): - print(x) - -def cmd_list_available(args, opts): - """list-available - list name of available spiders""" - for x in jsonrpc_call(opts, 'crawler/spiders', 'list'): - print(x) - -def cmd_list_resources(args, opts): - """list-resources - list available web service resources""" - for x in json_get(opts, '')['resources']: - print(x) - -def cmd_get_spider_stats(args, opts): - """get-spider-stats - get stats of a running spider""" - stats = jsonrpc_call(opts, 'stats', 'get_stats', args[0]) - for name, value in stats.items(): - print("%-40s %s" % (name, value)) - -def cmd_get_global_stats(args, opts): - """get-global-stats - get global stats""" - stats = jsonrpc_call(opts, 'stats', 'get_stats') - for name, value in stats.items(): - print("%-40s %s" % (name, value)) - -def get_wsurl(opts, path): - return urljoin("http://%s:%s/"% (opts.host, opts.port), path) - -def jsonrpc_call(opts, path, method, *args, **kwargs): - url = get_wsurl(opts, path) - return jsonrpc_client_call(url, method, *args, **kwargs) - -def json_get(opts, path): - url = get_wsurl(opts, path) - return json.loads(urllib.urlopen(url).read()) - -def parse_opts(): - usage = "%prog [options] [arg] ..." - description = "Scrapy web service control script. Use '%prog help' " \ - "to see the list of available commands." - op = optparse.OptionParser(usage=usage, description=description) - op.add_option("-H", dest="host", default="localhost", \ - help="Scrapy host to connect to") - op.add_option("-P", dest="port", type="int", default=6080, \ - help="Scrapy port to connect to") - opts, args = op.parse_args() - if not args: - op.print_help() - sys.exit(2) - cmdname, cmdargs, opts = args[0], args[1:], opts - commands = get_commands() - if cmdname not in commands: - sys.stderr.write("Unknown command: %s\n\n" % cmdname) - cmd_help(None, None) - sys.exit(1) - return commands[cmdname], cmdargs, opts - -def main(): - cmd, args, opts = parse_opts() - try: - cmd(args, opts) - except IndexError: - print(cmd.__doc__) - except JsonRpcError as e: - print(str(e)) - if e.data: - print("Server Traceback below:") - print(e.data) - - -if __name__ == '__main__': - main()