server = SimpleXMLRPCServer(("localhost", 8000))
server.register_function(pow)
server.register_function(lambda x,y: x+y, 'add')
server.serve_forever()
Now what I want to do is catch any errors that happen on requests, and
ideally have them emailed to me. I have the email part all taken care
of, I just need to know how to get at the exceptions.
Thanks in advance for any help,
Greg
Q&D :
try:
server.serve_forever()
except Exception, e:
mail_me_the_exception(e)
raise
Pseudo:
class MyCalls(object):
def _dispatch(self, method, args):
try:
self.getattr(self, method)(*args)
except:
handle_logging()
server = SimpleXMLRPCServer(("localhost", 8000))
server.register_instance(MyCalls())
server.serve_forever()
There might be an easier way... but this works for me.
-Jeff
On 9/27/07, Jeff McNeil <je...@jmcneil.net> wrote:
> Instead of register_function, use register_instance and provide a
> _dispatch method in that instance that handles your exception logging.
>
> Pseudo:
>
> class MyCalls(object):
> def _dispatch(self, method, args):
> try:
> self.getattr(self, method)(*args)
> except:
> handle_logging()
>
> server = SimpleXMLRPCServer(("localhost", 8000))
> server.register_instance(MyCalls())
> server.serve_forever()
>
> There might be an easier way... but this works for me.
>
> -Jeff
>
> On 9/27/07, gregp...@gmail.com <gregp...@gmail.com> wrote:
> > --
> > http://mail.python.org/mailman/listinfo/python-list
> >
>
I wonder if there is something wrong with that. I get this error on
calling ever method:
Fault 1: 'exceptions.TypeError:cannot marshal None unless allow_none
is enabled' but I can't see anywhere None would be coming from.
-Greg
class MyCalls(object):
def _dispatch(self, method, args):
try:
return getattr(self, method)(*args)
except:
handle_logging()
server = SimpleXMLRPCServer(("localhost", 8000))
server.register_instance(MyCalls())
server.serve_forever()
-Jeff
On 9/27
On 9/27/07, gregp...@gmail.com <gregp...@gmail.com> wrote:
Thanks, that works. I'm not sure why I didn't notice it wasn't
returning anything.
-Greg