Tiny optimisation for _get_handler_for_request (#6950)

we have hundreds of path_regexes (see #5118), so let's not convert the same
bytes to str for each of them.
This commit is contained in:
Richard van der Hoff 2020-02-19 10:38:20 +00:00 committed by GitHub
parent 0d0bc35792
commit abf1e5c526
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 4 additions and 1 deletions

1
changelog.d/6950.misc Normal file
View File

@ -0,0 +1 @@
Tiny optimisation for incoming HTTP request dispatch.

View File

@ -353,10 +353,12 @@ class JsonResource(HttpServer, resource.Resource):
if request.method == b"OPTIONS": if request.method == b"OPTIONS":
return _options_handler, "options_request_handler", {} return _options_handler, "options_request_handler", {}
request_path = request.path.decode("ascii")
# Loop through all the registered callbacks to check if the method # Loop through all the registered callbacks to check if the method
# and path regex match # and path regex match
for path_entry in self.path_regexs.get(request.method, []): for path_entry in self.path_regexs.get(request.method, []):
m = path_entry.pattern.match(request.path.decode("ascii")) m = path_entry.pattern.match(request_path)
if m: if m:
# We found a match! # We found a match!
return path_entry.callback, path_entry.servlet_classname, m.groupdict() return path_entry.callback, path_entry.servlet_classname, m.groupdict()