Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

_cp_dispatch not getting called in cherrypy

In the following example, I would expect to get an exception when accessing url http://127.0.0.1:8080/b/method_b. Instead, I get normal http response containing text 'method_b' in browser. No exception raised, meaning that _cp_dispatcher is not called. Am I getting something wrong about _cp_dispatch? I am using cherrypy version 3.8.0 in python 2.7.10

import cherrypy

class B(object):
    def _cp_dispatch(self, vpath):
        raise Exception("Here!!")

    @cherrypy.expose
    def method_b(self):
        return "method_b"

class A(object):
    def __init__(self):
        self.b = B()

cherrypy.quickstart(A())
like image 219
collier Avatar asked May 17 '26 20:05

collier


1 Answers

Yes you're getting something wrong about _cp_dispatch it will only be called when no property/method matches the request.

It will raise the exception if you call: http://127.0.0.1:8080/b/method_a.

method_a doesn't exists, method_b does.

like image 136
cyraxjoe Avatar answered May 20 '26 10:05

cyraxjoe