Python Web系列学习1

2023-11-17

1、全栈网络框架:除了封装网络和线程操作,还提供HTTP栈、数据库读写管理、HTML模板引擎等一系列功能的网络框架。Django、Flask、Tornado是全栈网络框架的典型标杆,Twisted更专注于网络底层的高性能封装而不提供HTML模板引擎等界面功能。

2、目前主流的Web服务器包括Nginx、Apache、lighttpd、IIS等,Python服务器端程序在Linux平台下使用最广泛的是Nginx。WSGI是将Python服务器端程序连接到Web服务器的通用协议。

                                                                       

                                                                                               WSGI的作用

Nginx是俄罗斯工程师开发的一个高性能HTTP和反向代理服务器,许多知名网站(百度、新浪和腾讯)均采用Nginx作为Web服务器。

3、Django、Flask和Tornado比较

Django:

 

Django太重了,除了web框架,自带ORM和模板引擎,灵活和自由度不够高

Django能开发小应用,但总会有“杀鸡焉用牛刀”的感觉

Django的自带ORM非常优秀,综合评价略高于SQLAlchemy

Django自带的模板引擎简单好用,但其强大程度和综合评价略低于Jinja

Django自带ORM也使Django与关系型数据库耦合度过高,如果想使用MongoDB等NoSQL数据,需要选取合适的第三方库,且总感觉Django+SQL才是天生一对的搭配,Django+NoSQL砍掉了Django的半壁江山

Django目前支持Jinja等非官方模板引擎

Django自带的数据库管理app好评如潮

Django非常适合企业级网站的开发:快速、靠谱、稳定

Django成熟、稳定、完善,但相比于Flask,Django的整体生态相对封闭

Django是Python web框架的先驱,用户多,第三方库最丰富,最好的Python库,如果不能直接用到Django中,也一定能找到与之对应的移植

Django上手也比较容易,开发文档详细、完善,相关资料丰富

 

Flask:

 

 

Flask确实很“轻”,不愧是Micro Framework,从Django转向Flask的开发者一定会如此感慨,除非二者均为深入使用过

Flask自由、灵活,可扩展性强,第三方库的选择面广,开发时可以结合自己最喜欢用的轮子,也能结合最流行最强大的Python库

入门简单,即便没有多少web开发经验,也能很快做出网站

非常适用于小型网站

非常适用于开发web服务的API

开发大型网站无压力,但代码架构需要自己设计,开发成本取决于开发者的能力和经验

各方面性能均等于或优于Django

Django自带的或第三方的好评如潮的功能,Flask上总会找到与之类似第三方库

Flask灵活开发,Python高手基本都会喜欢Flask,但对Django却可能褒贬不一

Flask与关系型数据库的配合使用不弱于Django,而其与NoSQL数据库的配合远远优于Django

Flask比Django更加Pythonic,与Python的philosophy更加吻合

 

Tornado:

 

Tornado是一种 Web 服务器软件的开源版本。Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。

Tornado全称Tornado Web Server,是一个用Python语言写成的Web服务器兼Web应用框架,由FriendFeed公司在自己的网站FriendFeed中使用,被Facebook收购以后框架在2009年9月以开源软件形式开放给大众。

Tornado走的是少而精的方向,注重的是性能优越,它最出名的是异步非阻塞的设计方式。

4、OpenSSL是一个强大的免费Socket层密码库,生成密钥和证书。

5、消息队列(MQ)提供异步通信协议,使用消息队列的好处:应用解耦、异步通信、数据持久化、送达保证。

Beanstalkd:消息队列的后起之秀;

RabbitMQ:实现了AMQP协议标准的开源消息代理和队列服务器,企业级消息系统,自带集群、管理和插件系统;

AMQP:高级消息队列协议;

用MapReduce做数据处理。

6、Python web技术栈

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python Web系列学习1 的相关文章

  • 生成 Flask 中使用的签名会话 cookie 值

    我正在用另一个需要将项目注入会话的 Flask 服务器代理 Flask 服务器 两台服务器具有相同的密钥 因此加密签名将相同 当使用 Flask 和会话时 http 响应包含一个 Set Cookie 标头session text 其中 t
  • Pytorch - 推断线性层 in_features

    我正在构建一个玩具模型来获取一些图像并进行分类 我的模型看起来像 conv2d gt pool gt conv2d gt linear gt linear 我的问题是 当我们创建模型时 我们必须计算第一个线性层的大小in features基
  • 如何将人物传奇带到前台?

    我有一系列子图 其中每个子图都有一个图例 我想在每个子图之外与相邻子图重叠 问题在于图例位于其自己的图的 顶部 但位于相邻图的下方 Legend 不将 zorder 作为参数 所以我不知道如何解决这个问题 这是我使用过的代码 import
  • TCP打孔问题

    我尝试使用 Python 3 中概述的原则为防火墙编写一个基本的 TCP 打孔器本文 http www bford info pub net p2pnat index html 不过 我无法连接任何东西 这是代码 usr bin pytho
  • 使用 Matplotlib 的范围绘制图像的 3D 轮廓

    正如我所介绍的here https stackoverflow com questions 18792624 fits image input to a range in plot python 在二维中 我想知道如何 缩放 要绘制到绘图中
  • Tensorflow 训练期间 GPU 使用率非常低

    我正在尝试为 10 类图像分类任务训练一个简单的多层感知器 这是 Udacity 深度学习课程作业的一部分 更准确地说 任务是对各种字体呈现的字母进行分类 数据集称为 notMNIST 我最终得到的代码看起来相当简单 但无论如何我在训练期间
  • 如何将嵌套的Python字典转换为简单的命名空间?

    假设我有一个深度为 N 的嵌套字典 如何将每个内部嵌套字典转换为简单的命名空间 example input key0a test key0b key1a key2a keyNx key2b test key1b test example o
  • 手动安装开放多语言世界网 (NLTK)

    我正在使用一台只能访问专用网络并且无法从命令行发送指令的计算机 因此 每当我必须安装 Python 包时 我都必须手动安装 我什至不能使用 Pypi 幸运的是 NLTK 允许我手动下载语料库 从here https www nltk org
  • 如何使用appium自动化Android手机后退按钮

    我正在使用 Appium python 客户端库 对 Android 上的混合移动应用程序进行测试自动化 我无法找到任何方法来自动化或创建手势以使用 电话后退 按钮返回到应用程序的上一页 有没有可以使用的驱动函数 我尝试了 self dri
  • Pygooglevoice登录错误

    另一个人问了这个问题 但没有回复 所以我再问一遍 我正在尝试使用 pygooglevoice API 但是当我运行 SMS py 示例脚本时 它给了我一个登录错误 我已经安装了 Enthought python 我想也许我还需要安装其他东西
  • 在 python 中使用 subprocess.call 时如何将 stdout 重定向到文件?

    我正在从另一个 python 脚本 A 调用一个 python 脚本 B 使用 subprocess call 如何将 B 的标准输出重定向到指定的文件 我正在使用 python 2 6 1 传递一个文件作为stdout参数为subproc
  • 如何向 RetrievalQA.from_chain_type 添加内存?或者,如何向 ConversationalRetrievalChain 添加自定义提示?

    如何向 RetrievalQA from chain type 添加内存 或者 如何向 ConversationalRetrievalChain 添加自定义提示 在过去的两周里 我一直在尝试制作一个可以通过文档聊天的聊天机器人 因此不仅仅是
  • 如何使用 selenium 获取 javascript 结果?

    我有以下代码 from selenium import selenium selenium selenium localhost 4444 chrome http some site com selenium start sel selen
  • 执行许多插入重复键更新错误:未使用所有参数

    所以我一直在尝试使用 python 2 7 15 使用 mysql connector 执行此查询 但由于某种原因 它似乎不起作用并且总是返回错误 并非所有参数都被使用 表更新有一个主键 即 ID 这是我尝试运行此 SQL 的查询 sql
  • 如何使用资源模块来衡量函数的运行时间?

    我想使用Python代码测量函数的CPU运行时间和挂钟运行时间 此处建议资源模块 如何以 Python 代码 不是从终端 的形式分别测量函数的 CPU 运行时间和挂钟运行时间 https stackoverflow com q 192046
  • python 相当于 sed

    有没有一种方法 无需双循环即可完成以下 sed 命令的操作 Input Time Banana spinach turkey sed i Banana s Toothpaste file Output Time BananaToothpas
  • PyMC3 和 Theano - 导入 pymc3 后,有效的 Theano 代码停止工作

    一些简单的 theano 代码可以完美运行 当我导入 pymc3 时停止工作 这里有一些片段可以重现错误 Initial Theano Code this works import theano tensor as tsr x tsr ds
  • float() 参数必须是字符串或数字,而不是“时间戳”

    我无法使 scilearn 与日期时间系列一起工作 找到了这篇文章 但对我没有帮助 Pandas 类型错误 float 参数必须是字符串或数字 https stackoverflow com questions 41256626 panda
  • 将同一 numpy 数组的两个视图组合成单个视图而不复制数组?

    我有一个大型 2d numpy 数组 我想删除它的子集并处理函数剩下的内容 我需要对许多子集执行此操作 因此理想情况下我不想每次都创建数组的副本 该函数不会更改数组中的任何值 mat np load filename mat 1 mat i
  • 使用 TkInter 绑定设置不可交互(点击)覆盖

    我已经浏览了其他几篇关于类似问题的帖子 所有这些似乎都指向this https stackoverflow com questions 29458775 tkinter see through window not affected by

随机推荐

  • 学习C# 哈希表(HashTable)用法

    学习C 哈希表 HashTable 用法 1 哈希表 HashTable 简述 在 NET Framework中 Hashtable是System Collections命名空间提供的一个容器 用于处理和表现类似keyvalue的键值对 其
  • list要点

    基本操作 erase函数 remove函数 特殊变动性操作 List迭代器 list与vector 异常处理 list本质是一个双向链表 其模板定义如下 namespace std template
  • 刷脸支付秒过地铁太快太方便

    刷脸支付让人们生活更便捷 公交卡 零钱 手机统统不用带 在广州 坐地铁只要刷脸就可以啦 据媒体报道 近日 广州首个智慧地铁站开通 乘客可以刷脸无感过闸 300毫秒内完成人脸识别 每分钟可通行40人 几年前 刷脸 还是朋友间用来互相调侃的 转
  • 给服务器端的.git瘦身

    一 背景 git库擅长管理文本型的文件 二进制文件一版不建议用git管理 现在我们已经用git管理的二进制文件 并且已经有了上百个提交 多个分支 且存储的二进制文件的总和已经相当庞大 可能几十个G 上百G 这给我们的git管理带来了以下3问
  • 嵌入式C语言之位操作详解

    1 位操作符 位操作直接将两个操作数按照二进制对应进行操作 例 0xaa 位与 0xf0 0xa0 逻辑操作是 两个操作数整体来操作 例 0xaa 逻辑与 0xf0 1 嵌入式的移位操作针对于无符号数 左移时右侧补0 右移时左侧补0 相当于
  • Python爬虫从入门到精通:(12)cookie_Python涛哥

    什么是cookie 是存储在客户端的一组键值对 web中cookie的典型应用 免密登陆 cookie和爬虫之间的关联 sometime 对一张页面进行请求的时候 如何请求的过程中不携带cookie的话 那么我们是无法请求到正确的页面数据
  • P5731 【深基5.习6】蛇形方阵

    题目描述 给出一个不大于 9 的正整数 n 输出n n 的蛇形方阵 从左上角填上 1 开始 顺时针方向依次填入数字 如同样例所示 注意每个数字有都会占用 3 个字符 前面使用空格补齐 输入格式 输入一个正整数 n 含义如题所述 输出格式 输
  • VMware虚拟机安装Linux 系统步骤

    一 获取安装包与系统镜像 VMware安装包下载 直接去访问我之前的博客 安装VMware虚拟化软件 何妨呀 的博客 CSDN博客 分享两个系统镜像资源库 下载Linux系统镜像 清华大学开源镜像站 清华大学开源软件镜像站 Tsinghua
  • [Web前端基础] CSS优先级、JS运算优先级、CSS设置在第几行进行超出部分省略号、JS设置元素样式的六种方式

    CSS优先级 important gt 行内样式 gt id选择器 gt 类选择器 gt 标签选择器 gt 通配符选择器 gt 继承 如果有多个复合选择器选中同一个元素 则需要通过权重计算确定优先级 挡住的是 标签选择器的个数 注意 只要是
  • win11出现:终止代码:SYSTEM SERVICE EXCEPTION解决方案实列(不懂请私信up主)

    有关此问题的详细信息和可能的解决方法 请访问 https www windows com stopcode 如果致电支持人呗 请向他们提供以下信息 终止代码 SYSTEM SERVICE EXCEPTION 终止代码解释 SYSTEM SE
  • Sublime, Vscode 快捷键

    vsCode 快捷键 Tips 编码规范 很多大型开源项目缩进其实不是4个空格 而是两个空格 比如 vue react 源码 当然还是具体看公司的代码是怎么规范的 在 VScode 里设置 tab 为2个空格方法 File Preferen
  • Mathorcup数学建模竞赛第六届-【妈妈杯】B题:车位分布的优化设计与评价(附一等奖获奖论文、C++和matlab代码)

    赛题描述 随着现代社会经济的快速发展 房地产成为国家经济发展中重要的经济增长点之一 而小区内汽车停车位的分布对于小区居民的上下班出行影响很大 请建立数学模型 解决下列问题 问题1 分析评判小区汽车停车位分布是否合理的几个关键指标 建立评判车
  • 基于ESP32的数据采集端

    背景介绍 数据采集设备属于物联网领域的标准件 广泛应用于工业 医疗 通讯以及教育等场景 调研发现 数据采集设备主要由硬件系统和软件代码两部分组成 近年来 随着技术的发展 工程技术人员通过编写各种程序算法 不断的挖掘硬件的性能 不仅降低了硬件
  • 一文读懂selenium自动化测试(基于Python)

    前言 我们今天来聊聊selenium自动化测试 我们都知道selenium是一款web自动化测试的工具 它应该如何去运用呢 我们接着看下去 1 Selenium简介 1 1 Selenium Selenium是一款主要用于Web应用程序自动
  • hive面试题

    Hive面试总结 什么是 Hive Hive结构描述 Hive的优势 内部表 外部表 分区表 分桶表 hive中 排序的种类和适用场景 动态分区和静态分区的区别 使用场景 hive 语句执行顺序 Hive的几种存储方式 列式存储的好处 HQ
  • 《期权、期货及其他衍生产品》读书笔记(第三章:利用期货的对冲策略)

    3 1 基本原理 完美对冲 Perfect Hedge 指完全消除风险的策略 一劳永逸 保完即忘Hedge and Forget Strategy 一旦设定对冲策略后 无需在对其进行调整 空头对冲 Short Hedge 对冲者选择期货的空
  • 前端面试总结

    前端面试 一 计算机网络 1 HTTP和HTTPS HTTP的基本概念 http 是互联网上应用最为广泛的一种网络协议 是一个客户端和服务器端请求和应答的标准 TCP 用于从 WWW 服务器传输超文本到本地浏览器的超文本传输协议 HTTP工
  • java 盲水印实现比其他版本的速度更快 !!!

    该盲水印版本速度上更快 参照了c的底层实现改编的 java 语法 结合先人的经验得以完成 希望能帮助有困惑的朋友 实测代码有效 下面就是我的代码实现 首先是盲水印工具类 导入类 import org bytedeco javacpp Loa
  • C++编译器为类自动生成的函数

    我们可以构建一个空类 class Empty 尽管没有定义任何函数 但我们可以通过以下方式使用这个类 Empty e1 Empty e2 e1 e2 e1 因为当编译器发现你用上述方式使用这个类而却在类声明中没有定义一般构造函数 非复制构造
  • Python Web系列学习1

    1 全栈网络框架 除了封装网络和线程操作 还提供HTTP栈 数据库读写管理 HTML模板引擎等一系列功能的网络框架 Django Flask Tornado是全栈网络框架的典型标杆 Twisted更专注于网络底层的高性能封装而不提供HTML