检查模块

此模块可用于检查Falcon应用程序,以获取有关其注册路由、中间件对象、静态路由、接收器和错误处理程序的信息。可以使用 inspect_app() 功能。附加功能可用于检查应用程序的特定方面。

A falcon-inspect-app 也可以使用CLI脚本;它使用inspect模块打印应用程序的字符串表示,如下所示:

# my_module exposes the application as a variable named "app"
$ falcon-inspect-app my_module:app

Falcon App (WSGI) Routes:
     /foo - MyResponder:
       ├── DELETE - on_delete
       ├── GET - on_get
       └── POST - on_post
     /foo/{id} - MyResponder:
       ├── DELETE - on_delete_id
       ├── GET - on_get_id
       └── POST - on_post_id
     /bar - OtherResponder:
       ├── DELETE - on_delete_id
       ├── GET - on_get_id
       └── POST - on_post_id
• Middleware (Middleware are independent):
     MyMiddleware.process_request
       OtherMiddleware.process_request

         MyMiddleware.process_resource
           OtherMiddleware.process_resource

              ├── Process route responder

           OtherMiddleware.process_response
         CORSMiddleware.process_response
• Static routes:
     /tests/ /path/to/tests [/path/to/test/index.html]
     /falcon/ /path/to/falcon
• Sinks:
     /sink_cls SinkClass
     /sink_fn sinkFn
• Error handlers:
     RuntimeError my_runtime_handler

上面的例子说明了如何 falcon-inspect-app 只输出 AppInfo.to_string() 方法。实际上,这里有一个简单的脚本,它返回与 falcon-inspect-app 命令:

from falcon import inspect
from my_module import app

app_info = inspect.inspect_app(app)

# Equivalent to print(app_info.to_string())
print(app_info)

更详细的应用程序描述可以通过传递获得 verbose=TrueAppInfo.to_string() ,而框架添加的默认路由可以通过传递来包含 internal=True . 这个 falcon-inspect-app 命令支持 --verbose--internal 用于启用这些选项的标志。

使用Inspect函数

inspect函数返回的值是包含从应用程序收集的相关信息的类实例。这些对象有助于以编程方式使用收集的数据。

为了支持对使用自定义路由器的应用程序的检查,该模块提供了一个 register_router() 函数为自定义路由器类注册处理程序函数。违约检查 CompiledRouter 类由 inspect_compiled_router() 功能。

返回的信息类可以使用visitor模式进行探索。要创建类的字符串表示形式 StringVisitor 使用访客。这个类在调用时自动实例化 str() 在实例上或在使用 to_string() 方法。

自定义访问者实现可以子类 InspectVisitor 并使用 InspectVisitor.process() 方法访问班级。

检查功能参考

本模块定义了以下检查功能。

falcon.inspect.inspect_app(app: App) AppInfo[源代码]

检查应用程序。

参数:

app (falcon.App) -- 要检查的应用程序。两者都适用 falcon.Appfalcon.asgi.App

返回:

有关应用程序的信息。打电话 to_string() 以获得一个对人类友好的表达方式的结果。

返回类型:

AppInfo

falcon.inspect.inspect_routes(app: App) List[RouteInfo][源代码]

检查应用程序的路由。

参数:

app (falcon.App) -- 要检查的应用程序。两者都适用 falcon.Appfalcon.asgi.App

返回:

应用程序的路由描述列表。

返回类型:

List[RouteInfo]

falcon.inspect.inspect_middleware(app: App) MiddlewareInfo[源代码]

检查应用程序的中间件组件。

参数:

app (falcon.App) -- 要检查的应用程序。两者都适用 falcon.Appfalcon.asgi.App

返回:

有关应用程序的中间件组件的信息。

返回类型:

MiddlewareInfo

falcon.inspect.inspect_static_routes(app: App) List[StaticRouteInfo][源代码]

检查应用程序的静电路由。

参数:

app (falcon.App) -- 要检查的应用程序。两者都适用 falcon.Appfalcon.asgi.App

返回:

已添加到应用程序中的静电路由列表。

返回类型:

List[StaticRouteInfo]

falcon.inspect.inspect_sinks(app: App) List[SinkInfo][源代码]

检查应用程序的接收器。

参数:

app (falcon.App) -- 要检查的应用程序。两者都适用 falcon.Appfalcon.asgi.App

返回:

应用程序使用的接收器列表。

返回类型:

List[SinkInfo]

falcon.inspect.inspect_error_handlers(app: App) List[ErrorHandlerInfo][源代码]

检查应用程序的错误处理程序。

参数:

app (falcon.App) -- 要检查的应用程序。两者都适用 falcon.Appfalcon.asgi.App

返回:

应用程序使用的错误处理程序列表。

返回类型:

List[ErrorHandlerInfo]

路由器检查

进路检查启用以下功能。

falcon.inspect.register_router(router_class)[源代码]

注册函数以检查特定路由器。

此修饰符为自定义路由器类注册一个新函数,以便可以使用函数进行检查 inspect_routes() 。检查函数获取应用程序使用的路由器实例,并返回 RouteInfo 。例如:

@register_router(MyRouterClass)
def inspect_my_router(router):
    return [RouteInfo('foo', 'bar', '/path/to/foo.py:42', [])]
参数:

router_class (Type) -- 要注册的路由器类。如果已经注册,则会引发错误。

falcon.inspect.inspect_compiled_router(router: CompiledRouter) List[RouteInfo][源代码]

漫游……的实例 CompiledRouter 返回已定义路由的列表。

CompiledRouter的默认路由检查器。

参数:

router (CompiledRouter) -- 要检查的路由器。

返回:

一份名单 RouteInfo

返回类型:

List[RouteInfo]

信息类

inspect函数返回的信息由这些类表示。

class falcon.inspect.AppInfo(routes: List[RouteInfo], middleware: MiddlewareInfo, static_routes: List[StaticRouteInfo], sinks: List[SinkInfo], error_handlers: List[ErrorHandlerInfo], asgi: bool)[源代码]

描述应用程序。

参数:
  • routes (List[RouteInfo]) -- 应用程序的路由。

  • middleware (MiddlewareInfo) -- 应用程序中的中间件信息。

  • static_routes (List[StaticRouteInfo]) -- 此应用程序的静电路由。

  • sinks (List[SinkInfo]) -- 此应用程序的接收器。

  • error_handlers (List[ErrorHandlerInfo]) -- 此应用程序的错误处理程序。

  • asgi (bool) -- 这是否为ASGI应用程序。

to_string(verbose=False, internal=False, name='') str[源代码]

返回此类的字符串表示形式。

参数:
  • verbose (bool, optional) -- 添加更多信息。默认为False。

  • internal (bool, optional) -- 还包括内部Falcon路由方法和错误处理程序。默认为 False

  • name (str, optional) -- 要在文本开头输出的应用程序名称。默认为 'Falcon App'

返回:

应用程序的字符串表示形式。

返回类型:

str

class falcon.inspect.RouteInfo(path: str, class_name: str, source_info: str, methods: List[RouteMethodInfo])[源代码]

描述了一条路由。

参数:
  • path (str) -- 此路由的路径。

  • class_name (str) -- 此路由的响应方的类名。

  • source_info (str) -- 定义此响应器的源路径。

  • methods (List[RouteMethodInfo]) -- 路由中定义的方法列表。

class falcon.inspect.RouteMethodInfo(method: str, source_info: str, function_name: str, internal: bool)[源代码]

描述一种响应器方法。

参数:
  • method (str) -- 此响应程序的HTTP方法。

  • source_info (str) -- 此函数的源路径。

  • function_name (str) -- 函数的名称。

  • internal (bool) -- 这是否为框架添加的默认响应方。

suffix

此路由函数的后缀。当函数没有后缀时,它被设置为空字符串。

类型:

STR

class falcon.inspect.MiddlewareInfo(middleware_tree: MiddlewareTreeInfo, middleware_classes: List[MiddlewareClassInfo], independent: bool)[源代码]

描述应用程序的中间件。

参数:
  • middlewareTree (MiddlewareTreeInfo) -- 应用程序的中间件树。

  • middlewareClasses (List[MiddlewareClassInfo]) -- 应用程序的中间件类。

  • independent (bool) -- 中间件组件是否独立执行。

independent_text

independent Arg.

类型:

STR

class falcon.inspect.MiddlewareTreeInfo(request: List[MiddlewareTreeItemInfo], resource: List[MiddlewareTreeItemInfo], response: List[MiddlewareTreeItemInfo])[源代码]

描述应用程序使用的中间件方法。

参数:
class falcon.inspect.MiddlewareClassInfo(name: str, source_info: str, methods: List[MiddlewareMethodInfo])[源代码]

描述中间件类。

参数:
  • name (str) -- 中间件类的名称。

  • source_info (str) -- 定义中间件的源路径。

  • methods (List[MiddlewareMethodInfo]) -- 中间件类定义的方法列表。

class falcon.inspect.MiddlewareTreeItemInfo(name: str, class_name: str)[源代码]

描述中间件树条目。

参数:
  • name (str) -- 方法的名称。

  • class_name (str) -- 该方法的类名。

class falcon.inspect.MiddlewareMethodInfo(function_name: str, source_info: str)[源代码]

描述了一种中间件方法。

参数:
  • function_name (str) -- 方法的名称。

  • source_info (str) -- 方法的源路径。

class falcon.inspect.StaticRouteInfo(prefix: str, directory: str, fallback_filename: Optional[str])[源代码]

描述了一条静电路由。

参数:
  • path (str) -- 静电路由的前缀。

  • directory (str) -- 静电路线的目录。

  • fallback_filename (str or None) -- 要提供的回退文件名。

class falcon.inspect.SinkInfo(prefix: str, name: str, source_info: str)[源代码]

描述一个接收器。

参数:
  • prefix (str) -- 水槽的前缀。

  • name (str) -- 接收器函数或类的名称。

  • source_info (str) -- 定义此接收器的源路径。

class falcon.inspect.ErrorHandlerInfo(error: str, name: str, source_info: str, internal: bool)[源代码]

描述错误处理程序。

参数:
  • error (name) -- 错误类型的名称。

  • name (str) -- 处理程序的名称。

  • source_info (str) -- 定义此错误处理程序的源路径。

  • internal (bool) -- 这是否为框架添加的默认错误处理程序。

访客课程

下面的访问者用于遍历信息类。

class falcon.inspect.InspectVisitor[源代码]

类的基本访问器类,该基访问器类实现 process 方法。

子类必须实现 visit_<name> 每个支持的类的方法。

process(instance: _Traversable)[源代码]

通过调用适当的访问方法来处理实例。

使用 __visit_name__ 属性的属性。 instance 获取要使用的方法。

参数:

instance (_Traversable) -- 要处理的实例。

class falcon.inspect.StringVisitor(verbose=False, internal=False, name='')[源代码]

返回INFO类的字符串表示形式的访问器。

通过调用 to_string() 在信息课上。它也可以通过调用 StringVisitor.process(info_instance)

参数:
  • verbose (bool, optional) -- 添加更多信息。默认为 False

  • internal (bool, optional) -- 还包括由框架添加的内部路由方法和错误处理程序。默认为 False

  • name (str, optional) -- 要在文本开头输出的应用程序名称。默认为 'Falcon App'