📜更改日志

🔶当前版本
支持版本中的🔷

版本23.6.0🔶

特征

  • #2670 增加 KEEP_ALIVE_TIMEOUT 默认为120秒

  • #2716 在蓝图中添加允许路线覆盖选项

  • #2724#2792 为应用程序中任何位置引发的所有异常添加新的异常信号

  • #2727 向BP组添加名称前缀

  • #2754 更新中间件类型的请求类型

  • #2770 启动时应用程序导致导入错误时出现更好的异常消息

  • #2776 提前设置多进程启动方法

  • #2785 向配置和CTX对象添加自定义类型

  • #2790 Add request.client_ip

错误修正

  • #2728 修复预期结果的遍历

  • #2729 当ResponseStream构造函数的Headers参数为None时处理大小写

  • #2737 的FIX类型批注 JSONREsponse 默认内容类型

  • #2740 在检查器中为JSON响应使用Sanic的序列化程序

  • #2760 支持 Request.get_current 在ASGI模式下

  • #2773 允许Blueprint路由以显式定义Error_Format

  • #2774 解析不同呈现器上的标头

  • #2782 解决PyPy兼容性问题

折旧和清除

  • #2777 删除对Python3.7的支持

开发人员基础设施

  • #2766 取消固定SetupTools版本

  • #2779 在循环中运行保持活动状态测试以获取可用的端口

改进的文档

  • #2741 关于从该列表中运行Sanic的更好的文档示例,以及发行说明中要突出显示的项目:

版本23.3.0

特征

  • #2545 标准化异常的初始化,以便使用异常更一致地控制HTTP响应

  • #2606 也在ASGI中将报头解码为UTF-8

  • #2646 单独的ASGI请求和寿命可调用

  • #2659 Use FALLBACK_ERROR_FORMAT for handlers that return empty()

  • #2662 添加基本文件浏览器(HTML页)和自动索引服务

  • #2667 更好的回溯格式(HTML页面)

  • #2668 更智能的错误页面呈现格式选择;更依赖页眉和“常识”默认设置

  • #2680 Check the status of socket before shutting down with SHUT_RDWR

  • #2687 刷新 Request.accept 更高性能和更符合规范的功能

  • #2696 将标题访问器添加为属性::

    Example-Field: Foo, Bar
    Example-Field: Baz
    
    request.headers.example_field == "Foo, Bar,Baz"
    
  • #2700 更简单的CLI目标

    $ sanic path.to.module:app          # global app instance
    $ sanic path.to.module:create_app   # factory pattern
    $ sanic ./path/to/directory/        # simple serve
    
  • #2701 API来定义托管进程中的多个工作进程

  • #2704 为动态更改工艺路线提供便利

  • #2706 添加创建和删除Cookie的便捷方法

    response = text("...")
    response.add_cookie("test", "It worked!", domain=".yummy-yummy-cookie.com")
    
  • #2707 简化 parse_content_header 转义以符合RFC并删除过时的FF黑客

  • #2710 更严格的字符集处理和请求URL转义

  • #2711 启用消耗身体 DELETE 默认情况下

  • #2719 允许 password 要传递到TLS上下文

  • #2720 Skip middleware on RequestCancelled

  • #2721 Change access logging format to %s

  • #2722 增列 CertLoader 作为直接控制的应用程序选项 SSLContext 对象

  • #2725 争用条件下的工作同步状态容差

错误修正

  • #2651 ASGI WebSocket按原样传递字节

  • #2697 Fix comparison between datetime aware and naive in file when using If-Modified-Since

折旧和清除

  • #2666 删除已弃用的 __blueprintname__ 物业

改进的文档

  • #2712 改进了使用 'https' 创建重定向的步骤

版本22.12.0🔷

Current version

特征

  • #2569 增列 JSONResponse 在更新响应对象时使用一些方便的方法初始化

  • #2598 Change uvloop requirement to >=0.15.0

  • #2609 添加与 websockets v11.0

  • #2610 在工作进程错误时及早终止服务器

    • 将死锁超时提高到30s

  • #2617 扩展正在运行的服务器工作进程的数量

  • #2621 #2634 发送 SIGKILL 在随后的 ctrl+c 迫使员工退出

  • #2622 添加接口以重新启动多路复用器中的所有工作进程

  • #2624 默认为 spawn 除非特别设置,否则对于所有子流程:

    from sanic import Sanic
    
    Sanic.start_method = "fork"
    
  • #2625 表单数据/多部分文件上传的文件名标准化

  • #2626 移至HTTP检查器:

    • 远程访问以检查正在运行的Sanic实例

    • TLS支持对检查员的加密调用

    • 使用API密钥对检查员进行身份验证

    • 能够使用自定义命令扩展检查器

  • #2632 控制重新启动操作的顺序

  • #2633 将重新加载间隔移动到类变量

  • #2636 增列 priorityregister_middleware 方法

  • #2639 增列 unquoteadd_route 方法

  • #2640 ASGI websockets to receive text or bytes

错误修正

  • #2607 在关闭之前强制关闭套接字以允许重新绑定

  • #2590 使用实际 StrEnum 在Python3.11+中

  • #2615 确保每个请求超时只执行一次中间件

  • #2627 ASGI应用程序在生命周期故障时崩溃

  • #2635 解决在Windows上创建低级服务器时出现的错误

折旧和清除

  • #2608 #2630 Signal conditions and triggers saved on signal.extra

  • #2626 移至HTTP检查器

    • 🚨 BREAKING CHANGE :将Inspector从带有自定义协议的简单TCP套接字移动到Sanic应用程序

    • DEPRECATE--inspect* commands have been deprecated in favor of inspect ... 命令

  • #2628 Replace deprecated distutils.strtobool

开发人员基础设施

  • #2612 添加针对Python3.11的CI测试

版本22.9.1

特征

  • #2585 改进了未注册任何应用程序时的错误消息

错误修正

  • #2578 为正在创建的证书添加证书加载器

  • #2591 请勿将哨兵身份用于 spawn 兼容性

  • #2592 修复嵌套蓝图组中的属性

  • #2595 在新的工人重新加载器上引入睡眠间隔

折旧和清除

开发人员基础设施

  • #2588 问题表单上的减价模板

改进的文档

  • #2556 V22.9文档

  • #2582 有关Windows支持的清理文档

版本22.9.0

特征

  • #2445 添加自定义载荷功能

  • #2490 制作 WebsocketImplProtocol 可迭代的异步

  • #2499 Sanic Server WorkerManager重构

  • #2506 使用 pathlib 用于路径解析(用于静态文件服务)

  • #2508 使用 path.parts 而不是 match (用于静态文件服务)

  • #2513 更好地处理请求取消

  • #2516 添加HTTP方法信息的请求属性:

    • request.is_safe

    • request.is_idempotent

    • request.is_cacheable

    • See MDN docs for more information about when these apply

  • #2522 始终在ASGI中显示服务器位置

  • #2526 对静态文件的缓存控制支持,以便在适当的时候返回304

  • #2533 Refactor _static_request_handler

  • #2540 在处理程序执行前后添加信号

    • http.handler.before

    • http.handler.after

  • #2542 增列 [redacted] 至CLI:)

  • #2546 添加弃用警告筛选器

  • #2550 中间件优先级和性能增强

错误修正

  • #2495 防止静态文件的目录遍历

  • #2515 请勿对蓝图中某些静态目录中的路径应用双斜杠

折旧和清除

  • #2525 对重复路由名称发出警告,将在v23.3中完全禁止

  • #2537 在v23.3中将完全禁止对重复异常发出警告和弃用通知

开发人员基础设施

  • #2504 清理测试套件

  • #2505 替换贡献文档中不受支持的Python版本号

  • #2530 不在已安装的程序包解析程序中包含测试文件夹

改进的文档

版本22.6.2

错误修正

  • #2522 始终在ASGI中显示服务器位置

版本22.6.1

错误修正

  • #2477 当文件夹名称以“..”结尾时,SANIC静态目录失败

版本22.6.0

特征

  • #2378 中介绍了HTTP/3和TLS证书的自动生成 DEBUG 模式

    • 👶 EARLY RELEASE FEATURE :通过HTTP/3服务SANIC是一项早期发布的功能。它还没有完全覆盖HTTP/3规范,而是致力于与Sanic现有的HTTP/1.1服务器的功能对等。WebSockets、WebTransport、推送响应是一些尚未实现的功能的示例。

    • 📦 EXTRA REQUIREMENT :并不是所有的HTTP客户端都能够与HTTP/3服务器接口。您可能需要安装 HTTP/3 capable client

    • 📦 EXTRA REQUIREMENT :要使用TLS自动生成,您必须安装 mkcerttrustme

  • #2416 Add message to task.cancel

  • #2420 Add exception aliases for more consistent naming with standard HTTP response types (BadRequest, MethodNotAllowed, RangeNotSatisfiable)

  • #2432 暴露ASGI scope 作为上的属性 Request 对象

  • #2438 Easier access to websocket class for annotation: from sanic import Websocket

  • #2439 New API for reading form values with options: Request.get_form

  • #2445 添加自定义 loads 功能

  • #2447, #2486 改进了API以支持设置缓存控制标头

  • #2453 将详细信息筛选移动到记录器

  • #2475 Expose getter for current request using Request.get_current()

错误修正

  • #2448 Fix to allow running with pythonw.exe or places where there is no sys.stdout

  • #2451 触发器 http.lifecycle.request ASGI模式下的信号

  • #2455 解析堆叠管线定义的类型

  • #2463 在Python3.7中正确捕获WebSocket处理程序中的WebSocket CancelledError

折旧和清除

  • #2487 V22.6的弃用和更改

    1. 可选应用程序注册表

    2. 在发送部分响应后执行自定义处理程序

    3. 在上配置回退处理程序 ErrorHandler

    4. 自定义 LOGO 设置

    5. sanic.response.stream

    6. AsyncioServer.init

开发人员基础设施

  • #2449 清理 blackisort 配置

  • #2479 修改一些不可靠的测试

改进的文档

  • #2461 更新示例以匹配当前应用程序命名标准

  • #2466 Better type annotation for Extend

  • #2485 改进了CLI中的帮助消息

版本22.3.0

特征

  • #2347 用于多应用服务器的API

    • 🚨 BREAKING CHANGE :旧的 sanic.worker.GunicornWorker 一直以来都是 removed 。用来运行Sanic gunicorn ,您应通过以下方式使用 uvicorn as described in their docs

    • 🧁 SIDE EFFECT :现在支持命名后台任务,甚至在Python3.7中也是如此

  • #2357 Parse Authorization header as Request.credentials

  • #2361 添加要跳过的配置选项 Touchup 启动应用程序的步骤

  • #2372 CLI帮助消息的更新

  • #2382 将警告降级为回水调试消息

  • #2396 考虑到 multidict v0.6

  • #2401 针对替代应用程序运行类型升级CLI捕获

  • #2402 有条件地将CLI参数注入工厂

  • #2413 将新的启动和停止事件侦听器添加到重装器进程

  • #2414 根据所需的监听程序参数删除循环

  • #2415 为错误的URL解析提供更好的异常

  • sanic-routing#47 Add a new extention parameter type: <file:ext>, <file:ext=jpg>, <file:ext=jpg|png|gif|svg>, <file=int:ext>, <file=int:ext=jpg|png|gif|svg>, <file=float:ext=tar.gz>

    • 👶 BETA FEATURE :此功能不适用于 path 类型匹配,并且仅作为测试版功能发布。

  • sanic-routing#57 Change register_pattern to accept a str or Pattern

  • sanic-routing#58 仅针对非空字符串的默认匹配,以及新的 strorempty 花样类型

    • 🚨 BREAKING CHANGE :以前是带有动态字符串参数的路径( /<foo>/<foo:str> )将匹配任何字符串,包括空字符串。现在就会了 only 匹配非空字符串。要保留旧行为,应使用新参数类型: /<foo:strorempty>

错误修正

  • #2373 移除 error_logger 关于WebSockets

  • #2381 修复新分配的 None 在任务注册表中

  • sanic-routing#52 将类型转换添加到正则表达式路由匹配

  • sanic-routing#60 在正则表达式路由上添加要求检查(这将解析多个静态目录,这些目录具有不同的 host 值)

折旧和清除

  • #2362 22.3弃用和更改

    1. debug=True and --debug do NOT automatically run auto_reload

    2. 默认错误呈现为纯文本(默认情况下,浏览器仍会获取HTML,原因是 auto 查看页眉)

    3. config is required for ErrorHandler.finalize

    4. ErrorHandler.lookup 需要两个位置参数

    5. 删除未使用的WebSocket协议参数

  • #2344 不推荐加载小写环境变量

开发人员基础设施

改进的文档

  • #2350 修复ASGI自述文件中的链接

  • #2398 文档中间件On_Request和On_Response

  • #2409 Add missing documentation for Request.respond

杂类

  • #2376 Fix typing for ListenerMixin.listener

  • #2383 Clear deprecation warning in asyncio.wait

  • #2387 清理 __slots__ 实施

  • #2390 Clear deprecation warning in asyncio.get_event_loop

版本21.12.1🔷

Current LTS version

  • #2349 仅在启动时显示MOTD

  • #2354 忽略Python3.7中的名称参数

  • #2355 添加对所有配置值的配置更新支持

版本21.12.0🔹

特征

  • #2260 允许早期的Blueprint注册仍然应用后来添加的对象

  • #2262 噪音异常-强制记录所有异常

  • #2264 任选 uvloop 按配置

  • #2270 使用多个TLS证书的Vhost支持

  • #2277 更改信号路径以提高一致性

    • BREAKING CHANGE :如果您手动发送信号,则会有突破性的变化。信号路由器的 get 不再是100%决定性的。现在有一个额外的步骤来循环遍历返回的信号,以便根据要求进行适当的匹配。如果使用以下命令来调度信号 app.dispatchbp.dispatch ,没有变化。

  • #2290 添加上下文例外

  • #2291 提高连接合并性能

  • #2295, #2316, #2331 Restructure of CLI and application state with new displays and more command parity with app.run

  • #2302 在定义时添加路径上下文

  • #2304 命名任务和用于管理后台任务的新API

  • #2307 在应用程序自动重新加载时,提供对更改文件的洞察

  • #2308 自动扩展应用程序 Sanic Extensions 如果已安装,并为访问扩展提供一流的支持

  • #2309 Builtin signals changed to Enum

  • #2313 支持其他配置实施用例

  • #2321 重构环境变量水合逻辑

  • #2327 防止对单个请求发送多个或混合响应

  • #2330 对环境变量进行自定义类型转换

  • #2332 使所有弃用通知保持一致

  • #2335 允许使用下划线开始实例名称

错误修正

  • #2273 Replace assignation by typing for websocket_handshake

  • #2285 修复启动日志中的IPv6显示

  • #2299 派遣 http.lifecyle.response 发件人异常处理程序

折旧和清除

  • #2306 删除不推荐使用的项目

    • SanicBlueprint 可能不再具有附加的任意属性

    • SanicBlueprint 被迫使用符合要求的名称

      • 字母数字+ _ + -

      • 必须以字母或 _

    • load_env keyword argument of Sanic

    • sanic.exceptions.abort

    • sanic.views.CompositionView

    • sanic.response.StreamingHTTPResponse

  • #2320 从错误处理程序设置的配置中删除应用程序实例

开发人员基础设施

  • #2251 更改dev安装命令

  • #2286 将代码限制复杂性阈值从5更改为10

  • #2287 更新主机测试函数名称,使其不会被覆盖

  • #2292 出错时使配置项失败

  • #2311, #2324 不运行起草PR的测试

  • #2336 从Coverage检查中移除路径

  • #2338 清理测试中的端口

改进的文档

杂类

版本21.9.3

Rerelease of v21.9.2 with some cleanup

版本21.9.2

  • #2268 使HTTP连接在空闲阶段启动,避免延迟和错误消息

  • #2310 采用POST-FLABACK_ERROR_FORMAT更一致的配置设置

版本21.9.1

  • #2259 允许不符合标准的错误处理程序

版本21.9.0

特征

  • #2158, #2248 彻底检修Web套接字的I/O

  • #2160 向服务器添加新的17个信号并请求生命周期

  • #2162 更聪明 auto 异常时的回退格式

  • #2184 介绍复制蓝图的实现

  • #2200 接受标头解析

  • #2207 记录远程地址(如果可用)

  • #2209 向BP组添加方便的方法

  • #2216 将默认消息添加到SanicExceptions

  • #2225 带路径参数的带注释处理程序的类型注释方便

  • #2236 允许来自路由处理程序的Falsey(但非-None)响应

  • #2238 增列 exception 从设计师到蓝图团队

  • #2244 用于服务文件或目录的显式静态指令(例如: static(..., resource_type="file") )

  • #2245 当连接任务取消时关闭HTTP循环

错误修正

  • #2188 修复对分块请求结尾的处理

  • #2195 解决静态请求上的意外错误处理

  • #2208 以更直观的方式附加和触发基于蓝图的异常

  • #2211 已修复处理Asgi应用程序调用的异常

  • #2213 修复了未记录ws异常的错误

  • #2231 通过使用更干净的任务关闭 abort() 在有战略意义的地方避免悬挂插座

  • #2247 修复调试模式下自动重新加载状态的日志记录

  • #2246 考虑具有异常处理程序但没有路线的BP

开发人员基础设施

  • #2194 使用原始客户端进行HTTP单元测试

  • #2199 切换到码准

  • #2214 尝试重新打开Windows测试

  • #2229 重构 HttpProtocol 转换为基类

  • #2230 重构 server.py 转换为多文件模块

杂类

备注

更改日志文件在中维护 ./docs/sanic/releases 。要查看完整的更改日志,请访问https://sanic.readthedocs.io/en/stable/sanic/changelog.html.

版本21.6.1

Bugfixes

  • #2178 更新Sanic-Routing以更好地拆分复杂的URI模板

  • #2183 正确处理分块的请求正文以解析日志中的幻影503

  • #2181 解决异常日志记录中的回归

  • #2201 流水线请求中的清理请求信息

版本21.6.0

Features

  • #2094 增列 response.eof() 用于关闭处理程序中的流的方法

  • #2097 允许不区分大小写的HTTP升级标头

  • #2104 显式使用CIMultiDict获取方法

  • #2109 持续使用错误记录器

  • #2114 新的 client_ip 连接信息实例的访问

  • #2119 Alternatate classes on instantiation for Config and Sanic.ctx

  • #2133 实施新版本的AST路由器

    • 正确区分 alphastring 参数类型

    • 添加一个 slug 参数类型,示例: <foo:slug>

    • 不推荐使用 <foo:string> 赞成 <foo:str>

    • 不推荐使用 <foo:number> 赞成 <foo:float>

    • 添加一个 route.uri 访问者

  • #2136 通过新的可选参数改进CLI

  • #2137 增列 version_prefix 到URL构建器

  • #2140 Event autoregistration with EVENT_AUTOREGISTER

  • #2146, #2147 Require stricter names on Sanic() and Blueprint()

  • #2150 Infinitely reusable and nestable Blueprint and BlueprintGroup

  • #2154 升级 websockets 依赖于最小版本

  • #2155 Allow for maximum header sizes to be increased: REQUEST_MAX_HEADER_SIZE

  • #2157 允许CLI中的应用程序工厂模式

  • #2165 将HTTP方法更改为枚举

  • #2167 允许在其他目录上自动重新加载

  • #2168 将简单HTTP服务器添加到CLI

  • #2170 Additional methods for attaching HTTPMethodView

Bugfixes

  • #2091 Fix UserWarning in ASGI mode for missing __slots__

  • #2099 修复404上的静态请求处理程序日志记录异常

  • #2110 FIX Request.args.op删除参数不一致

  • #2107 修复LOAD_ENV的类型提示

  • #2127 确保ASGI WS子协议是一个列表

  • #2128 修复了Blueprint异常处理程序不能一致地路由到正确处理程序的问题

Deprecations and Removals

  • #2156 Remove config value REQUEST_BUFFER_QUEUE_SIZE

  • #2170 ``CompostionView``已在21.12中弃用并标记为删除

  • #2172 不推荐使用StreamingHTTPResponse

Developer infrastructure

  • #2149 删除Travis配置项以支持GitHub操作

Improved Documentation

  • #2164 修复文档中的打字错误

  • #2100 删除不存在的参数的文档

版本21.3.2

Bugfixes

  • #2081 禁用WebSocket连接上的响应超时

  • #2085 确保在应用时保留没有斜线的设计图

版本21.3.1

Bugfixes

  • #2076 无法访问子文件夹中的静态文件(404)

版本21.3.0

Release Notes

Features

  • #1876 统一流服务器

  • #2005 新的 Request.id 物业

  • #2008 允许将路径库路径对象传递到 app.static() 帮手

  • #2010, #2031 新的启动优化路由器

  • #2018 #2064 主服务器进程的监听程序

  • #2032 将原始标头信息添加到请求对象

  • #2042 #2060 #2061 介绍Signals API

  • #2043 增列 __str____repr__ 致Sanic和Blueprint

  • #2047 在Blueprint tGroup上启用版本控制和严格斜杠

  • #2053 制作 get_app 名称参数可选

  • #2055 通过APP更改JSON编码器

  • #2063 应用程序和连接级上下文对象

Bugfixes

  • 解决 #1420 url_for 哪里 strict_slashes 正在为一条以 /

  • 解决 #1525 使用某些特殊字符时路由不正确

  • 解决 #1653 正文中的Asgi标头

  • 解决 #1722 在块模式下使用cURL

  • 解决 #1730 ASGI流响应中的额外内容

  • 解决 #1749 恢复损坏的中间件边缘案例

  • 解决 #1785 #1804 同步错误处理程序

  • 解决 #1790 协议错误不支持异步错误处理程序#1790

  • 解决 #1824 特定方法超时

  • 解决 #1875 从特定路由返回多个超时后,来自所有路由的响应超时错误

  • 解决 #1988 用Body处理安全方法

  • #2001 当Cookie最大寿命不是整数时引发ValueError

Deprecations and Removals

  • #2007
    • 配置使用 from_envvar

    • 配置使用 from_pyfile

    • 配置使用 from_object

  • #2009 将Sanic测试客户端删除到其自己的包中

  • #2036, #2037 放弃对Python3.6的支持

  • Request.endpoint deprecated in favor of Request.name

  • 已删除处理程序类型名称前缀(静态、WebSocket等)

Developer infrastructure

  • #1995 创建FundING.yml

  • #2013 将Codeql添加到CI管道

  • #2038 Codecov配置更新

  • #2049 Updated setup.py to use find_packages

Improved Documentation

  • #1218 缺少sanic.log.*的文档

  • #1608 添加有关Calver和LTS的文档

  • #1731 支持在根路径以外的其他位置挂载应用程序

  • #2006 升级了类型批注,改进了文档字符串和API文档

  • #2052 修复一些示例和文档

Miscellaneous

  • Request.route 物业

  • 更好的WebSocket子协议支持

  • 在传递可调用时解决Blueprint Group中的中间件错误

  • 将Blueprint和Sanic之间的通用逻辑移入Mixin

  • 更改了路由命名以使其更加一致
    • 请求端点是路由名称

    • 路由名称采用完全命名空间

  • 一些新的便利装饰品:
    • @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

  • 修复 Allow 不包括的标头 HEAD

  • 中使用“name”关键字 url_for 对于名称不存在的“静态”路由

  • 不能有多个 app.static() 不使用命名参数

  • 在中使用“filename”关键字 url_for 在一条文件路线上

  • unquote 在路线定义中(非自动)

  • routes_all 是元组

  • 处理程序参数仅为kwarg

  • request.match_info 现在是缓存(而不是计算)属性

  • 未知的静态文件MIMETYPE发送为 application/octet-stream

  • _host keyword in url_for

  • 将字符集默认添加到 utf-8 用于文本和js内容类型(如果未指定

  • 路径版本可以是字符串、浮点型或整型

  • 路径具有CTX属性

  • APP有 routes_staticroutes_dynamicroutes_regex

  • #2044 代码清理和重构

  • #2072 移除 BaseSanic 元类

  • #2074 Performance adjustments in handle_request_

版本20.12.3

Bugfixes

  • #2021 从WebSocket处理程序名称中删除前缀

版本20.12.2

Dependencies

  • #2026 将uvloop修复为0.14,因为0.15放弃了对Python3.6的支持

  • #2029 删除旧的Chardet要求,添加硬多路转换要求

版本19.12.5

Dependencies

  • #2025 将uvloop修复为0.14,因为0.15放弃了对Python3.6的支持

  • #2027 删除旧的Chardet要求,添加硬多路转换要求

版本20.12.0

Features

  • #1993 添加禁用应用注册表

  • #1945 如果找不到文件,则静态路由更详细

  • #1954 修复蓝图上的静态路径注册

  • #1961 添加对Python3.9的支持

  • #1962 Sanic CLI升级

  • #1967 更新aiofile版本要求

  • #1969 更新多指令集版本要求

  • #1970 添加py.type文件

  • #1972 请求处理程序中的速度优化

  • #1979 添加应用程序注册表和Sanic类级别应用程序检索

Bugfixes

  • #1965 修复ASGI流响应中的组块传输编码

Deprecations and Removals

  • #1981 清理并删除过时的代码

Developer infrastructure

  • #1956 固定负载模块测试

  • #1973 将Travis从.org过渡到.com

  • #1986 更新毒性要求

Improved Documentation

  • #1951 文档改进

  • #1983 删除Testing.rst中的重复内容

  • #1984 修复routing.rst中的拼写错误

版本20.9.1

Bugfixes

  • #1954 修复蓝图上的静态路径注册

  • #1957 删除ASGI流正文中的重复标头

版本19.12.3

Bugfixes

  • #1959 删除ASGI流正文中的重复标头

版本20.9

Features

  • #1887 WebSocket中的PASS子协议(SANIC服务器和ASGI)

  • #1894 自动设置 test_mode 应用程序实例上的标志

  • #1903 为更新应用程序价值添加新的统一方法

  • #1906, #1909 添加WebSocket_ping_Timeout和WebSocket_ping_Interval配置值

  • #1935 HTTPX版本依赖项已更新,计划在v20.12中将其作为依赖项删除

  • #1937 添加了AUTO、Text和JSON回退错误处理程序(在v21.3中,默认设置将从html更改为AUTO)

Bugfixes

  • #1897 解决流中未读字节的异常

Deprecations and Removals

  • #1903 在v21.3中,不推荐使用config.from_envar、config.from_pyfile和config.from_object,并将其设置为删除

Developer infrastructure

  • #1890, #1891 更新isort调用以与新API兼容

  • #1893 从setup.cfg中删除版本部分

  • #1924 为最热添加--严格-标记

Improved Documentation

  • #1922 在自述文件中添加明确的ASGI合规性

版本20.6.3

Bugfixes

  • #1884 将更改恢复为多处理模式

版本20.6.2

Features

  • #1641 为IPv6和UNIX套接字正确实现套接字绑定

版本20.6.1

Features

  • #1760 向WebSocket路由添加版本参数

  • #1866 增列 sanic 作为入口点命令

  • #1880 为url_for用法添加WebSocket的处理程序名称

Bugfixes

  • #1776 修复列表中主机参数问题的错误

  • #1842 修复STATIC_HANDLER酸洗错误

  • #1827 修复OSX PY38和Windows上的重新加载程序

  • #1848 反转命名响应中间件执行顺序,以匹配正常响应中间件执行顺序

  • #1853 修复了尝试选取包含WebSocket路由的应用程序时出现的Pickle错误

Deprecations and Removals

  • #1739 不推荐使用BODY_BYTES合并到Body中

Developer infrastructure

  • #1852 修复了Python夜间的CI测试环境的命名问题

  • #1857 将WebSockets版本调整为setup.py

  • #1869 将Run()‘S“协议”类型批注放在可选[]中

Improved Documentation

  • #1846 更新文档以明确响应中间件的执行顺序

  • #1865 修复隐藏文档的rst格式问题

版本20.6.0

Released, but unintentionally omitting PR #1880, so was replaced by 20.6.1

版本20.3.0

Features

  • #1762 Add srv.start_serving() and srv.serve_forever() to AsyncioServer

  • #1767 Make Sanic usable on hypercorn -k trio myweb.app

  • #1768 在正常错误和更漂亮的错误页面上没有回溯

  • #1769 文件响应中的代码清理

  • #1793#1819 升级 str.format() 转到f弦

  • #1798 允许在装有Python3.8的MacOS上运行多个工作进程

  • #1820 不要在异常中设置内容类型和内容长度标头

Bugfixes

  • #1748 删除中的循环参数 asyncio.Event 在Python3.8中

  • #1764 允许路线装饰者再次堆叠

  • #1789 Fix tests using hosts yielding incorrect url_for

  • #1808

    修复Windows上的Ctrl+C和测试

Deprecations and Removals

  • #1800 Begin deprecation in way of first-class streaming, removal of body_init, body_push, and body_finish

  • #1801 完全弃用来自 #1666 上的词典上下文 request 物体。

  • #1807 删除可从应用程序直接读取的服务器配置参数

  • #1818 Complete deprecation of app.remove_route and request.raw_args

Dependencies

  • #1794 凸点 httpx 至0.11.1

  • #1806 进口 ASGIDispatch 从顶层开始 httpx (来自第三方弃用)

Developer infrastructure

  • #1833 解决损坏的文档构建

Improved Documentation

  • #1755 Usage of response.empty()

  • #1778 更新自述文件

  • #1783 修正打字错误

  • #1784 更正了文档将MD移动到RST的更改日志 (#1691 )

  • #1803 更新配置文档以匹配DEFAULT_CONFIG

  • #1814 更新GING_started.rst

  • #1821 更新到部署

  • #1822 使用20.3中所做的更改更新文档

  • #1834 听众的顺序

版本19.12.0

Bugfixes

  • 修复蓝图中间件应用程序

    目前,注册的任何blueprint中间件,无论使用哪个blueprint,都将应用于 @app@blueprint 一模一样。

    作为此更改的一部分,基于蓝图的中间件应用程序是基于它们注册的位置来实施的。

    • 如果您通过 @blueprint.middleware 然后它将只应用于蓝图定义的路由。

    • 如果您通过 @blueprint_group.middleware 然后它将应用于组中所有基于蓝图的路由。

    • 如果通过以下方式定义中间件 @app.middleware 然后,它将应用于所有可用路径 (#37 _)

  • 固定 url_for 缺少服务器名的行为

    如果 SERVER_NAME was missing in the app.config entity, the url_for on the request and app were failing due to an AttributeError. This fix makes the availability of SERVER_NAME on our app.config an optional behavior. (#1707 )

Improved Documentation

  • 将文档从MD移动到RST

    像其他文档一样,将所有文档从降价移动到重新构建的文本,以统一方案并使未来更容易更新文档。 (#1691 _)

  • 修复文档 getgetlistrequest.args

    添加其他示例以说明如何使用 getlist and fix the documentation string for request.args behavior (#1704 )

版本19.6.3

Features

  • 启用镇民支持

    作为此功能的一部分, towncrier is being introduced as a mechanism to partially automate the process of generating and managing change logs as part of each of pull requests. (#1631 )

Improved Documentation

  • 记录基础结构更改

    • 使有一个共同点 CHANGELOG GitHub页面和文档的文件

    • 修复Sphinix弃用警告

    • 修复由于无效导致的文档警告 rst 缩进

    • 通过以下方式在GitHub和文档中启用通用投稿指南文件 CONTRIBUTING.rst (#1631 )

版本19.6.2

Features

  • #1562 Remove aiohttp dependency and create new SanicTestClient based upon requests-async

  • #1475 添加了ASGI支持(测试版)

  • #1436 从对象字符串添加配置支持

Bugfixes

  • #1587 为Expect标头添加缺少的句柄。

  • #1560 允许禁用传输编码:分块。

  • #1558 修复正常关机。

  • #1594 严格斜杠行为修复

Deprecations and Removals

  • #1544 放弃对diStudite的依赖

  • #1562 取消对Python3.5的支持

  • #1568 建议删除不推荐使用的路由。

警告

Sanic将不支持19.6版及以后的Python3.5。然而,版本18.12LTS的支持期将延长到2020年12月,因此通过了Python的官方支持版本3.5,该版本将于2020年9月到期。

版本19.3

Features

  • #1497 为多部分/表单数据请求添加对零长度和RFC 5987编码文件名的支持。

  • #1484 的类型 expires 的属性 sanic.cookies.Cookie 现在强制为类型 datetime

  • #1482 添加对 stream 的参数 sanic.Sanic.add_route() 适用于 sanic.Blueprint.add_route()

  • #1481 接受类型为的路径参数的负值 intnumber

  • #1476 不赞成使用…… sanic.request.Request.raw_args -它有一个根本性的缺陷,即丢弃重复的查询字符串参数。增列 sanic.request.Request.query_args 作为原始用例的替代。

  • #1472 Remove an unwanted None check in Request class repr implementation. This changes the default repr of a Request from <Request> to <Request: None />

  • #1470 向添加了2个新参数 sanic.app.Sanic.create_server

    • return_asyncio_server -是否返回asyncio.Server。

    • asyncio_server_kwargs -传递给 loop.create_server 用于sanic正在使用的事件循环。

    这是一个突破性的变化。

  • #1499 添加了一组测试和基准路由解析的测试用例。

  • #1457 的类型。 "max-age" 中的值 sanic.cookies.Cookie 现在强制为整数。非整数值替换为 0

  • #1445 添加了 endpoint 属性添加到传入的 request ,包含处理程序函数的名称。

  • #1423 改进了请求流。 request.stream 现在是有限大小的缓冲区,而不是无限大小的队列。呼叫者现在必须呼叫 await request.stream.read() 而不是 await request.stream.get() 来阅读身体的每一个部位。

    这是一个突破性的变化。

Bugfixes

  • #1502 Sanic was prefetching time.time() and updating it once per second to avoid excessive time.time() calls. The implementation was observed to cause memory leaks in some cases. The benefit of the prefetch appeared to negligible, so this has been removed. Fixes #1500

  • #1501 修复了当进程作为模块启动时自动重新加载程序中的错误。 python -m init0.mod1 启动Sanic服务器的位置 init0/mod1.py 使用 debug 启用并在中导入另一个模块 init0

  • #1376 Allow sanic test client to bind to a random port by specifying port=None when constructing a SanicTestClient

  • #1399 添加了在蓝图组上指定中间件的功能,以便从组中的蓝图产生的所有路线都应用了中间件。

  • #1442 允许使用 SANIC_ACCESS_LOG 环境变量,以在未显式传递到时启用/禁用访问日志 app.run() 。这允许禁用访问日志,例如,当通过Gunicorn运行时。

Developer infrastructure

  • #1529 更新项目PYPI凭据

  • #1515 修复导致Travis构建失败的Linter问题(FIX#1514)

  • #1490 修复文档构建中的Python版本

  • #1478 升级setupTools版本并在文档构建中使用原生文档

  • #1464 升级pytest,修复caplog单元测试

Improved Documentation

  • #1516 修复异常文档中的打字错误

  • #1510 修复Asyncio示例中的拼写错误

  • #1486 文档打字错误

  • #1477 修复Readme.md中的语法

  • #1489 将“数据库”添加到扩展列表中

  • #1483 将Sanic-Zipkin添加到扩展列表

  • #1487 从扩展列表中删除指向已删除的repo Sanic-OAuth的链接

  • #1460 18.12更改日志

  • #1449 新增请求对象修改示例

  • #1446 更新自述文件

  • #1444 更新自述文件

  • #1443 更新自述文件,包括新徽标

  • #1440 修复次要类型和PIP安装指令不匹配

  • #1424 文档增强功能

注:出于包装目的跳过了19.3.0,未在PYPI上发布。

版本18.12

  • 变化:

    • 代码库测试覆盖率从81%提高到91%。

    • 在静态文件文档中添加了流文件和主机示例

    • 根据要求添加附加和完成正文内容的方法(1379)

    • 与.appveyor.yml集成以支持Windows CI

    • 添加了有关af-inet6和af-unix套接字使用的文档

    • 代码样式采用黑色/isort

    • 连接丢失时取消任务

    • 简化请求IP和端口检索逻辑

    • 在加载配置文件中处理配置错误。

    • 与用于CI的codecov集成

    • 为配置部分添加丢失的文档。

    • 取消预测handler.log

    • 版本0.0.10的固定httptools要求+

  • 修正:

    • 固定 remove_entity_headers 辅助函数(#1415)

    • 修复使用Blueprint.group()将Blueprint与默认的url前缀分组时的TypeError,使用os.path.normpath避免无效的url前缀,如api//v1 f8a6af1重命名 http 模块到 helpers 防止与内置Python http库发生冲突(fixes#1323)

    • 在Windows上修复单元测试

    • 固定SANIC记录器的名称间距

    • 修复decorator示例中缺少的引号

    • 修复带引用参数的重定向

    • 最新蓝图代码的修复文档

    • 修复与降价列表相关的 Latex 文档的构建

    • 在 app.py 中修复循环异常处理

    • 修复Windows和其他平台中的内容长度不匹配

    • 修复静态文件的范围头处理(1402)

    • 修复记录器并使其工作(1397)

    • fix-type pikcle->pickle-in-multiprocessing测试

    • 修复酸洗蓝图更改在Blueprint中命名元组的“name”部分中传递的字符串,以匹配Blueprint模块属性名称的名称。这使得蓝图可以无错误地进行酸洗和取消酸洗,这是在Windows的多处理模式下运行Sanic的要求。添加了对酸洗和取消酸洗蓝图的测试添加了对酸洗和取消酸洗的测试Sanic本身添加了一个测试,用于在具有蓝图的应用程序上启用多处理(只有在Windows上运行测试时才有助于捕获此错误)。

    • 修复用于日志记录的文档

版本0.8

0.8.3

  • 变化:

    • 所有权更改为组织‘Sanic-org’

0.8.0

  • 变化:

    • 添加服务器发送的事件扩展(innokenty lebedev)

    • 请求处理程序任务取消的优雅处理(Ashley Sommer)

    • 重定向前清理URL(aveao)

    • 向请求添加url_字节(johndoe46)

    • PY37支持Travisci(云斯坦福)

    • OSX(Garyo)的自动重新加载支持

    • 添加UUID路由支持(Volodymyr Maksymiv)

    • 添加可暂停的响应流(Ashley Sommer)

    • 将weakref添加到请求槽(vopankov)

    • 将Ubuntu 12.04从测试夹具中移除(Yunsford)

    • 允许在附加路由(Kinware)中使用流处理程序

    • 使用Travis_retry治疗毒性(Raphael认为)

    • 为测试客户端(yunsford)更新aiohttp版本

    • 为清晰起见添加重定向导入(yingshaoxo)

    • 更新HTTP实体头(arnulfo sol_s)

    • 添加寄存器侦听器方法(Stephan Fitzpatrick)

    • 删除Windows的uvloop/ujson依赖项(abuckenheimer)

    • 204/304响应上的内容长度标题(Arnulfo Sol_s)

    • 扩展WebSocketProtocol参数并添加文档(Bob Olde Hampsink,Yunsford)

    • 将开发状态从pre-alpha更新为beta(maksim anisenkov)

    • KeepAlive超时日志级别已更改为调试(Arnulfo SolíS)

    • 由于Pytest dev/Pytest 3170(Maksim Aniskenov),将Pytest固定到3.3.2

    • 将python 3.5和3.6安装在docker容器上进行测试(shahin azad)

    • 添加对蓝图组和嵌套的支持(elias tarhini)

    • 删除Windows安装程序的uvloop(aleksandr kurlov)

    • 自动重新加载(Yaser Amari)

    • 文档更新/修复(多个贡献者)

  • 修正:

    • 修复:在Linux中自动重新加载(Ashley Sommer)

    • 修复:aiohtp>3.3.0(ashley-sommer)的中断测试

    • 修复:在Windows上默认禁用自动重新加载(abuckenheimer)

    • 修复(1143):使用gunicorn(hqy)关闭访问日志

    • 修复(1268):支持文件响应的状态代码(Cosmo Borsky)

    • 修复(1266):将content_-type标志添加到sanic.static(cosmo borsky)

    • 修复:添加websocket路由(ciscorn)中缺少子协议参数

    • fix(1242):CI头响应(云斯坦福)

    • fix(1237):为websockets添加版本约束(yunsford)

    • 修复(1231):内存泄漏-始终释放资源(Phillip Xu)

    • 修正(1221):如果存在运输,提出请求真实(拉斐尔认为)

    • 修复aiohttp>=3.1.0(ashley sommer)的失败测试

    • 修复“尝试一切”示例(pymaniacgr,kot83)

    • 修复(1158):默认为在调试模式下自动重新加载(Raphael认为)

    • 修复(1136):errorhandler.response handler调用太严格(Julien Castiaux)

    • 修复:raw需要像object(cloudship)这样的字节

    • 修复(1120):将列表传递给路由装饰器的主机arg(timothy ebiuwhe)

    • 修复:多部分/表单数据分析器(dirkguijt)中的错误

    • 修复:值为空时缺少参数的异常(nyankiyoshi)

    • Fix:参数检查(Howie Hu)

    • Fix(1089):带有命名参数和不同方法的路由问题(Yunsford)

    • Fix(1085):多工模式下的信号处理(云斯坦福)

    • 修复:readme.rst(cosven)中的单引号

    • 修正:方法错误(dmitry dygalo)

    • 修正:记录IP和端口的响应正确输出(wibowo arindrarto)

    • 修复(1042):异常处理(Raphael认为)

    • 修复:中文uris(howie hu)

    • 修正(1079):self.transport为none时的超时错误(Raphael认为)

    • 修正(1074):修正路线有斜线时的严格斜线(拉斐尔认为)

    • 修复(1050):将Samesite cookie添加到cookie键中(Raphael认为)

    • 修复(1065):允许在服务器启动后添加任务(Raphael认为)

    • 修正(1061):未经授权的例外中的双引号(拉斐尔认为)

    • 修复(1062):在添加任务方法中注入应用程序(Raphael认为)

    • 修复:更新environment.yml以读取docs(eli uriegas)

    • 修正:触发响应超时时取消请求任务(jeong yunwon)

    • 修正(1052):不允许对符合RFC7231的方法作出响应(Raphael认为)

    • 修正:ipv6地址和套接字数据格式(dan palmer)

注意:变更日志在0.1和0.7之间未维护

版本0.1

0.1.7

  • 颠倒静态URL和目录参数以满足规范

0.1.6

  • 静态文件

  • 延迟加载cookie

0.1.5

  • Cookies

  • 蓝图侦听器和排序

  • 快速路由器

  • 修复:中等大小的日志请求的文件读取不完整

  • 打破:在开始后和停止前,现在把 sanic 作为他们的第一个参数。

0.1.4

  • 多重处理

0.1.3

  • 蓝图支持

  • 更快的响应处理

0.1.1 - 0.1.2

  • 努力通过CI更新pypi

0.1.0

  • 向公众发布