3

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())
collier
  • 111
  • 5

1 Answers1

4

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.

cyraxjoe
  • 5,661
  • 3
  • 28
  • 42