pywebio.platform
— Web框架支持¶
platform
模块为PyWebIO提供了对不同Web框架的支持。
具体用法参见用户手册 与Web框架集成 小节
Tornado相关¶
-
pywebio.platform.tornado.
start_server
(applications, port=0, host='', debug=False, cdn=True, allowed_origins=None, check_origin=None, auto_open_webbrowser=False, websocket_max_message_size=None, websocket_ping_interval=None, websocket_ping_timeout=None, **tornado_app_settings)[源代码]¶ 启动一个 Tornado server 将PyWebIO应用作为Web服务提供。
Tornado为PyWebIO应用的默认后端Server,可以直接使用
from pywebio import start_server
导入。- 参数
applications (list/dict/callable) –
PyWebIO应用. 可以是任务函数或者任务函数的字典或列表。
类型为字典时,字典键为任务名,类型为列表时,函数名为任务名。
可以通过
app
URL参数选择要运行的任务(例如访问http://host:port/?app=foo
来运行foo
任务), 默认使用运行index
任务函数,当index
任务不存在时,PyWebIO会提供一个默认的索引页作为主页。 参见 Server模式任务函数为协程函数时,使用 基于协程的会话实现 ;任务函数为普通函数时,使用基于线程的会话实现。
port (int) – 服务监听的端口。设置为
0
时,表示自动选择可用端口。host (str) – 服务绑定的地址。
host
可以是IP地址或者为hostname。如果为hostname,服务会监听所有与该hostname关联的IP地址。 通过设置host
为空字符串或None
来将服务绑定到所有可用的地址上。debug (bool) – 是否开启Tornado Server的debug模式,开启后,代码发生修改后服务器会自动重启。 详情请参阅 tornado 文档
cdn (bool/str) – 是否从CDN加载前端静态资源,默认为
True
。支持传入自定义的URL来指定静态资源的部署地址allowed_origins (list) –
除当前域名外,服务器还允许的请求的来源列表。 来源包含协议、域名和端口部分,允许使用 Unix shell 风格的匹配模式(全部规则参见 Python文档 ):
*
为通配符?
匹配单个字符[seq]
匹配seq中的任何字符[!seq]
匹配任何不在seq中的字符
比如
https://*.example.com
、*://*.example.com
check_origin (callable) – 请求来源检查函数。接收请求来源(包含协议、域名和端口部分)字符串作为参数, 返回
True/False
指示服务器接受/拒绝该请求。若设置了check_origin
,allowed_origins
参数将被忽略auto_open_webbrowser (bool) – 当服务启动后,是否自动打开浏览器来访问服务。(该操作需要操作系统支持)
websocket_max_message_size (int) – Tornado Server最大可接受的WebSockets消息大小。单位为字节,默认为10MiB。
websocket_ping_interval (int) – 当被设置后,服务器会以
websocket_ping_interval
秒周期性地向每个WebSockets连接发送‘ping‘消息。 如果应用处在某些反向代理服务器之后,设置websocket_ping_interval
可以避免WebSockets连接被代理服务器当作空闲连接而关闭。 同时,若WebSockets连接在某些情况下被异常关闭,应用也可以及时感知。websocket_ping_timeout (int) – 如果设置了
websocket_ping_interval
,而服务没有在发送‘ping‘消息后的websocket_ping_timeout
秒 内收到‘pong’消息,应用会将连接关闭。默认的超时时间为websocket_ping_interval
的三倍。tornado_app_settings – 传递给
tornado.web.Application
构造函数的额外的关键字参数 可设置项参考: https://www.tornadoweb.org/en/stable/web.html#tornado.web.Application.settings
1.1 新版功能: The cdn parameter.
-
pywebio.platform.tornado.
webio_handler
(applications, cdn=True, allowed_origins=None, check_origin=None)[源代码]¶ 获取在Tornado中运行PyWebIO应用的RequestHandler类。RequestHandler类基于WebSocket协议与浏览器进行通讯。
- 参数
applications (callable/list/dict) – PyWebIO应用。
cdn (bool/str) – 是否从CDN加载前端静态资源,默认为
True
。设置成False
时会从PyWebIO应用部署URL的同级目录下加载静态资源。 支持传入自定义的URL来指定静态资源的部署地址allowed_origins (list) – 除当前域名外,服务器还允许的请求的来源列表。
check_origin (callable) – 请求来源检查函数。
关于各参数的详细说明见
pywebio.platform.tornado.start_server()
的同名参数。- 返回
Tornado RequestHandler类
Flask相关¶
-
pywebio.platform.flask.
webio_view
(applications, cdn=True, session_expire_seconds=None, session_cleanup_interval=None, allowed_origins=None, check_origin=None)[源代码]¶ 获取在Flask中运行PyWebIO任务的视图函数。基于http请求与前端页面进行通讯
- 参数
applications (list/dict/callable) – PyWebIO应用。
cdn (bool/str) – 是否从CDN加载前端静态资源,默认为
True
。设置成False
时会从PyWebIO应用部署URL的同级目录下加载静态资源。 支持传入自定义的URL来指定静态资源的部署地址session_expire_seconds (int) – 会话不活跃过期时间。
session_cleanup_interval (int) – 会话清理间隔。
allowed_origins (list) – 除当前域名外,服务器还允许的请求的来源列表。
check_origin (callable) – 请求来源检查函数。
关于各参数的详细说明见
pywebio.platform.flask.start_server()
的同名参数。- 返回
Flask视图函数
-
pywebio.platform.flask.
start_server
(applications, port=8080, host='localhost', cdn=True, allowed_origins=None, check_origin=None, session_expire_seconds=None, session_cleanup_interval=None, debug=False, **flask_options)[源代码]¶ 启动一个 Flask server 将PyWebIO应用作为Web服务提供。
- 参数
applications (list/dict/callable) – PyWebIO应用. 格式同
pywebio.platform.tornado.start_server()
的applications
参数port (int) – 服务监听的端口。设置为
0
时,表示自动选择可用端口。host (str) – 服务绑定的地址。
host
可以是IP地址或者为hostname。如果为hostname,服务会监听所有与该hostname关联的IP地址。 通过设置host
为空字符串或None
来将服务绑定到所有可用的地址上。cdn (bool/str) – 是否从CDN加载前端静态资源,默认为
True
。支持传入自定义的URL来指定静态资源的部署地址allowed_origins (list) – 除当前域名外,服务器还允许的请求的来源列表。格式同
pywebio.platform.tornado.start_server()
的allowed_origins
参数check_origin (callable) – 请求来源检查函数。格式同
pywebio.platform.tornado.start_server()
的check_origin
参数session_expire_seconds (int) – 会话过期时间。若 session_expire_seconds 秒内没有收到客户端的请求,则认为会话过期。
session_cleanup_interval (int) – 会话清理间隔(秒)。服务端会周期性清理过期的会话,释放会话占用的资源。
debug (bool) – 是否开启Flask Server的debug模式,开启后,代码发生修改后服务器会自动重启。
flask_options – 传递给
flask.Flask.run
函数的额外的关键字参数 可设置项参考: https://flask.palletsprojects.com/en/1.1.x/api/#flask.Flask.run
Django相关¶
-
pywebio.platform.django.
webio_view
(applications, cdn=True, session_expire_seconds=None, session_cleanup_interval=None, allowed_origins=None, check_origin=None)[源代码]¶ 获取在django中运行PyWebIO任务的视图函数。 基于http请求与前端进行通讯
- 参数
applications (list/dict/callable) – PyWebIO应用。
cdn (bool/str) – 是否从CDN加载前端静态资源,默认为
True
。设置成False
时会从PyWebIO应用部署URL的同级目录下加载静态资源。 支持传入自定义的URL来指定静态资源的部署地址session_expire_seconds (int) – 会话不活跃过期时间。
session_cleanup_interval (int) – 会话清理间隔。
allowed_origins (list) – 除当前域名外,服务器还允许的请求的来源列表。
check_origin (callable) – 请求来源检查函数。
关于各参数的详细说明见
pywebio.platform.django.start_server()
的同名参数。- 返回
Django视图函数
-
pywebio.platform.django.
start_server
(applications, port=8080, host='localhost', cdn=True, allowed_origins=None, check_origin=None, session_expire_seconds=None, session_cleanup_interval=None, debug=False, **django_options)[源代码]¶ 启动一个 Django server 将PyWebIO应用作为Web服务提供。
- 参数
applications (list/dict/callable) – PyWebIO应用. 格式同
pywebio.platform.tornado.start_server()
的applications
参数port (int) – 服务监听的端口。设置为
0
时,表示自动选择可用端口。host (str) – 服务绑定的地址。
host
可以是IP地址或者为hostname。如果为hostname,服务会监听所有与该hostname关联的IP地址。 通过设置host
为空字符串或None
来将服务绑定到所有可用的地址上。cdn (bool/str) – 是否从CDN加载前端静态资源,默认为
True
。支持传入自定义的URL来指定静态资源的部署地址allowed_origins (list) – 除当前域名外,服务器还允许的请求的来源列表。格式同
pywebio.platform.tornado.start_server()
的allowed_origins
参数check_origin (callable) – 请求来源检查函数。格式同
pywebio.platform.tornado.start_server()
的check_origin
参数session_expire_seconds (int) – 会话过期时间。若 session_expire_seconds 秒内没有收到客户端的请求,则认为会话过期。
session_cleanup_interval (int) – 会话清理间隔(秒)。服务端会周期性清理过期的会话,释放会话占用的资源。
debug (bool) – 开启 Django debug mode 和一般访问日志的记录
django_options – django应用的其他设置,见 https://docs.djangoproject.com/en/3.0/ref/settings/ . 其中
DEBUG
、ALLOWED_HOSTS
、ROOT_URLCONF
、SECRET_KEY
被PyWebIO设置,无法在django_options
中指定
aiohttp相关¶
-
pywebio.platform.aiohttp.
webio_handler
(applications, cdn=True, allowed_origins=None, check_origin=None, websocket_settings=None)[源代码]¶ 获取在aiohttp中运行PyWebIO任务函数的 Request Handler 协程。 Request Handler基于WebSocket协议与浏览器进行通讯。
- 参数
applications (list/dict/callable) – PyWebIO应用。
cdn (bool/str) – 是否从CDN加载前端静态资源,默认为
True
。设置成False
时会从PyWebIO应用部署URL的同级目录下加载静态资源。 支持传入自定义的URL来指定静态资源的部署地址allowed_origins (list) – 除当前域名外,服务器还允许的请求的来源列表。
check_origin (callable) – 请求来源检查函数。
websocket_settings (dict) – 创建 aiohttp WebSocketResponse 时使用的参数。见 https://docs.aiohttp.org/en/stable/web_reference.html#websocketresponse
关于
applications
、allowed_origins
、check_origin
参数的详细说明见pywebio.platform.aiohttp.start_server()
的同名参数。- 返回
aiohttp Request Handler
-
pywebio.platform.aiohttp.
start_server
(applications, port=0, host='', debug=False, cdn=True, allowed_origins=None, check_origin=None, auto_open_webbrowser=False, websocket_settings=None, **aiohttp_settings)[源代码]¶ 启动一个 aiohttp server 将PyWebIO应用作为Web服务提供。
- 参数
applications (list/dict/callable) – PyWebIO应用. 格式同
pywebio.platform.tornado.start_server()
的applications
参数port (int) – 服务监听的端口。设置为
0
时,表示自动选择可用端口。host (str) – 服务绑定的地址。
host
可以是IP地址或者为hostname。如果为hostname,服务会监听所有与该hostname关联的IP地址。 通过设置host
为空字符串或None
来将服务绑定到所有可用的地址上。debug (bool) – 是否开启asyncio的Debug模式
cdn (bool/str) – 是否从CDN加载前端静态资源,默认为
True
。支持传入自定义的URL来指定静态资源的部署地址allowed_origins (list) – 除当前域名外,服务器还允许的请求的来源列表。格式同
pywebio.platform.tornado.start_server()
的allowed_origins
参数check_origin (callable) – 请求来源检查函数。格式同
pywebio.platform.tornado.start_server()
的check_origin
参数auto_open_webbrowser (bool) – 当服务启动后,是否自动打开浏览器来访问服务。(该操作需要操作系统支持)
websocket_settings (dict) – 创建 aiohttp WebSocketResponse 时使用的参数。见 https://docs.aiohttp.org/en/stable/web_reference.html#websocketresponse
aiohttp_settings – 需要传给 aiohttp Application 的参数。可用参数见 https://docs.aiohttp.org/en/stable/web_reference.html#application
其他¶
-
pywebio.platform.
seo
(title, description=None, app=None)[源代码]¶ 设置PyWebIO应用的SEO信息(在被搜索引擎索引时提供的网页信息)
- 参数
title (str) – 应用标题
description (str) – 应用简介
app (callable) – PyWebIO任务函数
可以通过装饰器或直接调用的方式使用
seo()
。 除了使用seo()
函数,PyWebIO默认会将任务函数的函数注释作为SEO信息:@seo("title", "description") def foo(): pass def bar(): pass def hello(): """应用标题 应用简介... (应用简介和标题之间使用一个空行分隔) """ start_server([ foo, hello, seo("title", "description", bar), ])
-
pywebio.platform.
run_event_loop
(debug=False)[源代码]¶ 运行事件循环
基于协程的会话在启动基于线程的http服务器之前需要启动一个单独的线程来运行事件循环。
- 参数
debug – Set the debug mode of the event loop. See also: https://docs.python.org/3/library/asyncio-dev.html#asyncio-debug-mode