Mercurial > p > roundup > code
view roundup/scripts/roundup_xmlrpc_server.py @ 3896:fca0365521fc
ignore client shutdown exceptions when sending responses
patch from Ulrik Miaelsson
If the user clicks the stop button, or click another link before
the previous has finished loading, or something similar an IOError
exception will be raised which results in the admin being sent an
email.
This can understandably be pretty annoying if your users are
doing that on a regular basis. So we'll trap that exception
and ignore it.
| author | Justus Pendleton <jpend@users.sourceforge.net> |
|---|---|
| date | Tue, 11 Sep 2007 21:30:14 +0000 |
| parents | cf6c45201980 |
| children | edf526c91412 |
line wrap: on
line source
#! /usr/bin/env python # # Copyright (C) 2007 Stefan Seefeld # All rights reserved. # For license terms see the file COPYING.txt. # import getopt, os, sys, socket from roundup.xmlrpc import RoundupServer, RoundupRequestHandler from roundup.instance import TrackerError from SimpleXMLRPCServer import SimpleXMLRPCServer def usage(): print """ Options: -i instance home -- specify the issue tracker "home directory" to administer -V -- be verbose when importing -p, --port <port> -- port to listen on """ def run(): try: opts, args = getopt.getopt(sys.argv[1:], 'e:i:p:V', ['encoding=', 'port=']) except getopt.GetoptError, e: usage() return 1 verbose = False tracker = '' port = 8000 encoding = None for opt, arg in opts: if opt == '-V': verbose = True elif opt == '-i': tracker = arg elif opt in ['-p', '--port']: port = int(arg) elif opt in ['-e', '--encoding']: encoding = encoding if sys.version_info[0:2] < (2,5): if encoding: print 'encodings not supported with python < 2.5' sys.exit(-1) server = SimpleXMLRPCServer(('', port), RoundupRequestHandler) else: server = SimpleXMLRPCServer(('', port), RoundupRequestHandler, allow_none=True, encoding=encoding) if not os.path.exists(tracker): print 'Instance home does not exist.' sys.exit(-1) try: object = RoundupServer(tracker, verbose) except TrackerError: print 'Instance home does not exist.' sys.exit(-1) server.register_instance(object) # Go into the main listener loop print 'Roundup XMLRPC server started on %s:%d' \ % (socket.gethostname(), port) try: server.serve_forever() except KeyboardInterrupt: print 'Keyboard Interrupt: exiting' if __name__ == '__main__': run()
