Releases
v21.3.0
Release Notes
Features
#1876 Unified streaming server
#2005 New Request.id
property
#2008 Allow Pathlib Path objects to be passed to app.static()
helper
#2010 #2031 New startup-optimized router
#2018 #2064 Listeners for main server process
#2032 Add raw header info to request object
#2042 #2060 #2061 Introduce Signals API
#2043 Add __str__
and __repr__
to Sanic and Blueprint
#2047 Enable versioning and strict slash on BlueprintGroup
#2053 Make get_app
name argument optional
#2055 JSON encoder change via app
#2063 App and connection level context objects
Bugfixes and issues resolved
Resolve #1420 url_for
where strict_slashes
are on for a path ending in /
Resolve #1525 Routing is incorrect with some special characters
Resolve #1653 ASGI headers in body
Resolve #1722 Using curl in chunk mode
Resolve #1730 Extra content in ASGI streaming response
Resolve #1749 Restore broken middleware edge cases
Resolve #1785 #1804 Synchronous error handlers
Resolve #1790 Protocol errors did not support async error handlers #1790
Resolve #1824 Timeout on specific methods
Resolve #1875 Response timeout error from all routes after returning several timeouts from a specific route
Resolve #1988 Handling of safe methods with body
#2001 Raise ValueError when cookie max-age is not an integer
Deprecations and Removals
#2007
Config using from_envvar
Config using from_pyfile
Config using from_object
#2009 Remove Sanic test client to its own package
#2036 #2037 Drop Python 3.6 support
Request.endpoint
deprecated in favor of Request.name
handler type name prefixes removed (static, websocket, etc)
Developer infrastructure
#1995 Create FUNDING.yml
#2013 Add codeql to CI pipeline
#2038 Codecov configuration updates
#2049 Updated setup.py to use find_packages
Improved Documentation
#1218 Documentation for sanic.log.* is missing
#1608 Add documentation on calver and LTS
#1731 Support mounting application elsewhere than at root path
#2006 Upgraded type annotations and improved docstrings and API documentation
#2052 Fix some examples and docs
Miscellaneous
Request.route
property
Better websocket subprotocols support
Resolve bug with middleware in Blueprint Group when passed callable
Moves common logic between Blueprint and Sanic into mixins
Route naming changed to be more consistent
request endpoint is the route name
route names are fully namespaced
Some new convenience decorators:
@app.main_process_start
@app.main_process_stop
@app.before_server_start
@app.after_server_start
@app.before_server_stop
@app.after_server_stop
@app.on_request
@app.on_response
Fixes Allow
header that did not include HEAD
Using "name" keyword in url_for
for a "static" route where name does not exist
Cannot have multiple app.static()
without using the named param
Using "filename" keyword in url_for
on a file route
unquote
in route def (not automatic)
routes_all
is tuples
Handler arguments are kwarg only
request.match_info
is now a cached (and not computed) property
Unknown static file mimetype is sent as application/octet-stream
_host
keyword in url_for
Add charset default to utf-8
for text and js content types if not specified
Version for a route can be str, float, or int
Route has ctx property
App has routes_static
, routes_dynamic
, routes_regex
#2044 Code cleanup and refactoring
#2072 Remove BaseSanic
metaclass
#2074 Performance adjustments in handle_request_
You can’t perform that action at this time.