标签归档:flask

Flasky-O‘Reilly“Flask Web Development”(第二版)的配套代码

Flasky

此存储库包含我的O‘Reilly书第二版的源代码示例Flask Web Development

此存储库中的提交和标记是精心创建的,以与书中呈现概念的顺序相匹配。有关说明,请阅读本书序言中标题为“如何使用示例代码”的部分

面向本书第一版的读者

该书第一版的代码示例已移动到另一个存储库:https://github.com/miguelgrinberg/flasky-first-edition

Dash Python、R、Julia和Jupyter的分析型Web应用程序

DASH是用于构建ML和数据科学Web应用程序的下载最多、最值得信赖的Python框架

Dash构建在Plotly.js、Reaction和Flask之上,它将现代UI元素(如下拉列表、滑块和图形)直接绑定到您的分析Python代码。阅读我们自豪地制作的教程❤️由破折号本身

应用程序示例

应用程序 描述
这里有一个简单的Dash App示例,它将下拉菜单绑定到D3.js Ploly Graph。当用户在下拉列表中选择一个值时,应用程序代码会动态地将数据从Google Finance导出到Pandas DataFrame。这个应用程序是刚刚编写的43代码行(view the source)
DASH应用程序代码是声明性和反应性的,这使得构建包含许多交互元素的复杂应用程序变得很容易。下面是一个具有5个输入、3个输出和交叉滤波的示例。此应用程序仅由160行代码组成,所有代码均为Python
破折号使用Plotly.js用来绘制图表。支持超过35种图表类型,包括地图
DASH不仅仅适用于仪表盘。您可以完全控制应用程序的外观。这是一个样式设置为PDF报表的Dash应用程序

要了解有关Dash的更多信息,请阅读extensive announcement letterjump in with the user guide

DASH OSS和DASH Enterprise

使用Dash Open Source,Dash应用程序可在本地笔记本电脑或工作站上运行,但组织中的其他人无法轻松访问

当您的Dash应用程序准备好在部门或公司范围内使用时,使用Dash Enterprise进行纵向扩展。或者,从一开始就使用Dash Enterprise启动您的计划,从Ploly的团队中获得开发人员工作效率的提升和实践加速

ML Ops功能:为ML Ops提供一站式服务:为您的Dash应用程序提供水平可扩展的托管、部署和身份验证。不需要IT或DevOps

  • App manager无需IT或DevOps团队即可部署和管理Dash应用程序。应用程序管理器为您提供对Dash部署的所有方面的点击式控制
  • Kubernetes scaling确保Dash应用程序的高可用性,并利用Dash Enterprise的Kubernetes架构进行横向扩展。不需要IT或掌舵
  • No code auth只需点击几下即可控制Dash应用程序访问。Dash Enterprise支持LDAP、AD、PKI、OKTA、SAML、OpenID Connect、OAuth、SSO和简单的电子邮件身份验证
  • Job Queue作业队列是构建可伸缩的Dash应用程序的关键。将繁重的计算从同步Dash回调移动到作业队列以进行异步后台处理

低码特性:低码Dash应用程序功能,极大地提高了开发人员的工作效率

  • Design Kit像专业人士一样设计,不需要编写一行CSS。轻松安排、设置样式、打造品牌和自定义Dash应用程序
  • Snapshot Engine将Dash应用程序视图保存并共享为链接或PDF。或者,通过Dash运行Python作业,并在作业完成后让快照引擎通过电子邮件发送报告
  • Dashboard ToolkitDash应用程序的拖放布局、图表编辑和交叉过滤器
  • Embedding在不使用IFrame的情况下,在现有Web应用程序或网站中本地嵌入Dash应用程序

企业人工智能功能:您的数据科学团队快速交付AI/ML研究和业务计划所需的一切

  • AI App MarketplaceDash Enterprise附带了数十个Dash应用程序模板,用于解决AI/ML影响最大的业务问题
  • Big Data for Pything连接到Python最流行的大数据后端:Dask、Databricks、NVIDIA Rapids、Snowflake、Postgres、Vaex等
  • GPU & Dask AccelerationDash Enterprise将适用于GPU和并行CPU计算的最流行的Python HPC堆栈交到了企业用户手中
  • Data Science Workspaces从第一天开始高效工作。从Dash Enterprise的板载代码编辑器编写并执行Python、R和Julia代码

看见https://plotly.com/contact-us/为了取得联系

Superset-Apache Superset是一个数据可视化和数据探索平台

现代的、企业就绪的商业智能Web应用程序

为什么是超集?

超集提供:

  • 用于可视化数据集和制作交互式仪表板的直观界面
  • 一系列精美的可视化效果,可展示您的数据
  • 用于提取和显示数据集的无代码可视化构建器
  • 世界级的SQL IDE,用于准备用于可视化的数据,包括丰富的元数据浏览器
  • 轻量级语义层,使数据分析师能够快速定义自定义维度和指标
  • 对大多数SQL语言数据库的开箱即用支持
  • 无缝的内存中异步缓存和查询
  • 一种可扩展的安全模型,允许配置关于谁可以访问哪些产品功能和数据集的非常复杂的规则
  • 与主要身份验证后端(数据库、OpenID、LDAP、OAUTH、REMOTE_USER等)集成
  • 能够添加自定义可视化插件
  • 用于编程自定义的API
  • 从头开始为规模而设计的云原生架构

支持的数据库

超集可以从任何使用SQL语言的数据存储或数据引擎(例如,Presto或Athena)查询具有Python DB-API驱动程序和SQLAlChemy方言的数据

更全面的支持数据库列表以及配置说明可以找到:here

想要添加对您的数据存储区或数据引擎的支持吗?阅读更多内容here关于技术要求

安装和配置

Extended documentation for Superset

参与进来吧

投稿人指南

有兴趣做贡献吗?请查看我们的CONTRIBUTING.md查找有关贡献的资源,以及有关如何设置开发环境的详细指南

资源

Flask-用于构建Web应用程序的Python微框架

Flask

Flask是一个轻量级的WSGI Web应用程序框架。它旨在使入门变得快速而简单,并且能够向上扩展到复杂的应用程序。它最初只是Werkzeug和JJJA_的一个简单包装器,现在已经成为最流行的Python Web应用程序框架之一

Fask提供建议,但不强制执行任何依赖项或项目布局。由开发人员选择他们想要使用的工具和库。社区提供了许多扩展,使添加新功能变得容易

 

一个简单的例子

使用pip_安装和更新:

$ pip install -U Flask

_PIP:https://pip.pypa.io/en/stable/quickstart/

贡献

代码-挡路::蟒蛇

# save this as app.py
from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello, World!"

有关设置开发环境以及如何为Flask做出贡献的指导,请参阅贡献指南_

$ flask run
  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

捐赠

_投稿指南:https://github.com/pallets/flask/blob/main/CONTRIBUTING.rst

托盘组织开发并支持Flask及其使用的库。为了扩大贡献者和用户的社区,让维护人员有更多的时间在项目上投入更多的时间,请今天就捐款。

链接

  • Documentation: https://flask.palletsprojects.com/
  • Changes: https://flask.palletsprojects.com/changes/
  • PyPI Releases: https://pypi.org/project/Flask/
  • Source Code: https://github.com/pallets/flask/
  • Issue Tracker: https://github.com/pallets/flask/issues/
  • Website: https://palletsprojects.com/p/flask/
  • Twitter: https://twitter.com/PalletsTeam
  • Chat: https://discord.gg/pallets

升级 Flask 到 Quart, 3 倍性能提升就这么简单!

简评:将你的 Flask 应用程序升级到 Quart 应用程序,轻松获得 3 倍的性能提升。

自从 Flask 在 8 年前发布以来,Python 发生了很大变化,特别是引入了 asyncio之后。asyncio 允许开发像 uvloop 和 asyncpg 这样的库来大大提高性能,可惜要 Flask 集成 asyncio 或这些库并不是一件简单的事情。不过不用气馁,Quart 框架与 asyncio 可以一起使用 Flask-API。

基于共享的 Flask-API,现有的 Flask 应用程序进行很少的修改就可以变成 Quart 应用程序,然后就可以使用这些新的库来实现 Flask 无法做到的性能优化。

本文详细介绍了典型的生产环境的 CRUD 应用程序从 Flask 到 Quart 的转换,并展示相关的性能改进优势。

0. 我想直接看杰伦

将这个 Flask-pyscopg2 应用程序升级到 Quart-asyncpg 应用程序可以提高 3 倍的性能,而且不需要对代码进行重大的重写或调整。

如上所示,在针对单个资源详情的请求下,Flask每秒请求为330个,而quart能达到1160个。以此类推,Quart 相比于 Flask 平均性能提高3倍。

这个比较,我使用了一个简单的只提供一个 RESTful 接口的应用程序,这是微服务架构中的常见用例。

该应用程序有三个路由。这些路由分别是:

  • 单个电影详情:GET /films/pk/
  • 所有电影:GET /films/
  • 添加新评论:POST /reviews/

源代码可以在以下网址找到:
https://github.com/pgjones/faster_than_flask_article

有两个 commit ,分别是一个 Flask 版本和一个Quart 版本。

1. 从 Flask 到 Quart

从 Flask 改用 Quart 很容易,只需要一点点改变,特别是 from flask 改为 from quart,函数变成异步函数。

def add_review():
  data = request.get_json()
  ...

变成

async def add_review():
  data = await request.get_json()
  ...

2.数据库连接,从 psycopg2 到 asyncpg

从 psycopg2 改用 asyncpg 比较麻烦,因为两者有不同的用法。

为了简化区别,我们在 Flask 应用程序中使用了 PoolWrapper,使得 psycopg2 可以使用与 asyncpg 相同的 API 进行上下文管理,即:

with pool.acquire() as connection:

这将允许通过with更改为async with来使用asyncpg。

当然,除了连接之外,Asyncpg和psycopg2还在游标使用、事务、执行参数和查询格式方面存在差异。这些差异是你在迁移过程中需要注意的。

3.部署

Flask 应用程序往往不能直接在生产环境中直接暴露给用户,这是因为Flask 本身一次只能处理一个请求。因此,常常用WSGI服务器与某种异步 worker 结合使用,例如  带 eventlet 的Gunicorn。

Quart 也可以用 Gunicorn 部署,它允许使用相同的命令来运行 Flask 和 Quart 应用程序:

$ gunicorn --config gunicorn.py 'run:create_app()'
针对 Flask 和 Quart 的性能测试是基于 Gunicorn 进行的。

4.添加测试数据

除了添加一个简单的 review 表之外,Postgresql 示例数据库还要为应用程序提供一些用于 CRUD的数据。

CREATE TABLE review (
  film_id INTEGER REFERENCES film(film_id),
  rating INTEGER
);

5.性能测试

为了测量应用程序的性能,我们使用了wrk。它被配置为使用20个连接,以匹配数据库连接池的大小(确保最高的吞吐量,20是我使用过的典型值)。命令如下:

测试 GET 请求的命令是

$ wrk --connections 20 --duration 5m http://localhost:5000/${PATH}/

测试 POST 请求的命令是

$ wrk --connections 20 --duration 5m --script post.lua http://localhost:5000/${PATH}/

测试使用的 post.lua 文件如下:

wrk.method = "POST"
wrk.body = '{"film_id": 995, "rating": 4}'
wrk.headers["Content-Type"] = "application/json"

6.系统信息与结果

系统信息:

Postgres (9.5.10),wrk (4.0.0),Python (3.6.3),asyncpg (0.13.0),Flask (0.12.2),Gunicorn (19.7.1),psycopg2 (2.7.3.2), Quart (0.3.1)

全部运行在一台 AWS c4.large 机器上。

结果

请注意,Quart 服务器的平均等待时间减少了 2 至 3.5 倍,每秒的请求数量增加了 2 至 3.5 倍。

7.结论

Flask 应用程序升级到 Quart 应用程序是相当简单的,因为大部分 API 是共享的,所以主要工作就是在正确的位置写asyncawait。然而,如果使用 SQLAlchemy(或其他 ORM),则从psycopg2 到 asyncpg 的改变会比较复杂,并且可能会很麻烦。

这个 demo 应用程序的性能显着提高,这个改进主要是由于 Quart 使用了 asyncpg 和 uvloop,据估计,仅 Quart 就能提供 1.5 倍的提升。

总之,从 Flask-psycopg2 应用程序升级到 Quart-asyncpg 应用程序的比较简单,并拥有非常合理的性能改进。这可能会扩展到其他基于 asyncio 的库,意味着将 Flask 应用程序转换到 asyncio 生态系统,Quart 只需要很小的工作量。

原文:3x faster Flask apps
https://hackernoon.com/3x-faster-than-flask-8e89bfbe8e4f

我们的文章到此就结束啦,如果你喜欢今天的 Python 教程,请持续关注Python实用宝典。

有任何问题,可以在公众号后台回复:加群,回答相应验证信息,进入互助群询问。

原创不易,希望你能在下面点个赞和在看支持我继续创作,谢谢!

给作者打赏,选择打赏金额
¥1¥5¥10¥20¥50¥100¥200 自定义

​Python实用宝典 ( pythondict.com )
不只是一个宝典
欢迎关注公众号:Python实用宝典