Yahoo奇摩 網頁搜尋

搜尋結果

  1. 2017年6月27日 · 開關 (switch)用來控制電路的開與閉,機械式的switc內部由接點開關、彈簧、與切換搖柄所組成。. 電路圖上switc可用簡單的符號來表示,單軸單切 (single pole single throw, SPST)、單軸雙切 (single pole double throw, SPDT)、雙軸單切 (double pole single throw, DPST)、雙軸雙切 (double ...

    • 概览
    • 01. WSGI 是什么,因何而生?
    • 02. HTTP请求是如何到应用程序的?
    • 03. 实现一个简单的 WSGI Server
    • 04. 实现“高并发”的 WSGI Server
    • 05. 第一次路由:PasteDeploy
    • 06. PasteDeploy 使用说明
    • 07. webob.dec.wsgify 装饰器
    • 08. 第二次路由:中间件 routes 路由
    • 附录:参考文章

    1.WSGI 是什么,因何而生?

    2.HTTP请求是如何到应用程序的?

    3.实现一个简单的 WSGI Server

    4.实现“高并发”的WSGI Server

    5.第一次路由:PasteDeploy

    6.PasteDeploy 使用说明

    WSGI是 Web Server Gateway Interface 的缩写。

    它是 Python应用程序(application)或框架(如 Django)和 Web服务器之间的一种接口,已经被广泛接受。

    它是一种协议,一种规范,其是在 PEP 333提出的,并在 PEP 3333 进行补充(主要是为了支持 Python3.x)。这个协议旨在解决众多 web 框架和web server软件的兼容问题。有了WSGI,你不用再因为你使用的web 框架而去选择特定的 web server软件。

    常见的web应用框架有:Django,Flask等

    常用的web服务器软件有:uWSGI,Gunicorn等

    那这个 WSGI 协议内容是什么呢?知乎上有人将 PEP 3333 翻译成中文,写得非常好,我将这段协议的内容搬运过来。

    当客户端发出一个 HTTP 请求后,是如何转到我们的应用程序处理并返回的呢?

    关于这个过程,细节的点这里没法细讲,只能讲个大概。

    我根据其架构组成的不同将这个过程的实现分为两种:

    1、两级结构

    在这种结构里,uWSGI作为服务器,它用到了HTTP协议以及wsgi协议,flask应用作为application,实现了wsgi协议。当有客户端发来请求,uWSGI接受请求,调用flask app得到相应,之后相应给客户端。

    这里说一点,通常来说,Flask等web框架会自己附带一个wsgi服务器(这就是flask应用可以直接启动的原因),但是这只是在开发阶段用到的,在生产环境是不够用的,所以用到了uwsgi这个性能高的wsgi服务器。

    在上面的架构图里,不知道你发现没有,有个库叫做 wsgiref ,它是 Python 自带的一个 wsgi 服务器模块。

    从其名字上就看出,它是用纯Python编写的WSGI服务器的参考实现。所谓“参考实现”是指该实现完全符合WSGI标准,但是不考虑任何运行效率,仅供开发和测试使用。

    有了 wsgiref 这个模块,你就可以很快速的启动一个wsgi server。

    当你运行这段代码后,就会开启一个 wsgi server,监听 0.0.0.0:64570 ,并接收请求。

    使用 lsof 命令可以查到确实开启了这个端口

    以上使用 wsgiref 写了一个demo,让你对wsgi有个初步的了解。其由于只适合在学习测试使用,在生产环境中应该另寻他道。

    上面我们说不能在生产中使用 wsgiref ,那在生产中应该使用什么呢?选择有挺多的,比如优秀的 uWSGI,Gunicore等。但是今天我并不准备讲这些,一是因为我不怎么熟悉,二是因为我本人从事 OpenStack 的二次开发,对它比较熟悉。

    所以下面,是我花了几天时间阅读 OpenStack 中的 Nova 组件代码的实现,刚好可以拿过来学习记录一下,若有理解偏差,还望你批评指出。

    在 nova 组件里有不少服务,比如 nova-api,nova-compute,nova-conductor,nova-scheduler 等等。

    其中,只有 nova-api 有对外开启 http 接口。

    要了解这个http 接口是如何实现的,从服务启动入口开始看代码,肯定能找到一些线索。

    从 Service 文件可以得知 nova-api 的入口是 nova.cmd.api:main()

    上面我们提到 WSGI Server 的创建要传入一个 Application,用来处理接收到的请求,对于一个有多个 app 的项目。

    比如,你有一个个人网站提供了如下几个模块

    如何根据 请求的url 地址,将请求转发到对应的application上呢?

    答案是,使用 PasteDeploy 这个库(在 OpenStack 中各组件被广泛使用)。

    PasteDeploy 到底是做什么的呢?

    根据 官方文档 的说明,翻译如下

    到上一步,我已经得到了 application 的有用的线索。考虑到很多人是第一次接触 PasteDeploy,所以这里结合网上博客做了下总结。对你入门会有帮助。

    掌握 PasteDeploy ,你只要按照以下三个步骤逐个完成即可。

    1、配置 PasteDeploy使用的ini文件;

    2、定义WSGI应用;

    3、通过loadapp函数加载WSGI应用;

    第一步:写 paste.ini 文件

    经过了 PasteDeploy 的路由调度,我们找到了 nova.api.openstack.compute:APIRouterV21.factory 这个 application 的入口,看代码知道它其实返回了 APIRouterV21 类的一个实例。

    WSGI规定 application 必须是一个 callable 的对象,函数、方法、类、实例,若是一个类实例,就要求这个实例所属的类实现 __call__ 的方法。

    APIRouterV21 本身没有实现 __call__ ,但它的父类 Router实现了 __call__

    我们知道,application 必须遵丛 WSGI 的规范

    1.必须接收environ, start_response两个参数;

    2.必须返回 「可迭代的对象」。

    在文章最开始处,我们给大家画了一张图。

    这张图把一个 HTTP 请求粗略简单地划分为两个过程。但事实上,整个过程远比这个过程要复杂得多。

    实际上在 WSGI Server 到 WSGI Application 这个过程中,我们加很多的功能(比如鉴权、URL路由),而这些功能的实现方式,我们称之为中间件。

    中间件,对服务器而言,它是一个应用程序,是一个可调用对象, 有两个参数,返回一个可调用对象。而对应用程序而言,它是一个服务器,为应用程序提供了参数,并且调用了应用程序。

    今天以URL路由为例,来讲讲中间件在实际生产中是如何起作用的。

    当服务器拿到了客户端请求的URL,不同的URL需要交由不同的函数处理,这个功能叫做 URL Routing。

  2. 2010年8月4日 · Abstract. 在分析timing時,在timing report中常會出現setup time slack與hold time slack,本文深入探討slack的意義。. Introduction. slack英文本身的意思鬆弛,若setup time/hold time slack為正值,表示目前滿足setup time/hold time需求,並且還有多餘的時間,若slack為負值,表示 ...

  3. 2020年5月21日 · 创作正文 一、NAS什么? 高大上来说:NAS(Network Attached Storage:网络附属存储)按字面简单说就是连接在网络上,具备资料存储功能的装置,因此也称为“网络存储器”。 它一种专用数据存储服务器。它以数据为中心,将存储设备与服务器彻底分离,集中管理数据,从而释放带宽、提高性能 ...

  4. 2021年4月29日 · 在几年前windows10系统就注意到,蓝牙耳机连接windows电脑后会出现两个模式,一个Hands-free AG Audio(即免提模式,以下简称Hands-free),一个stereo(立体声模式),并且发现只有Hands-free模式才能使用耳机的麦克风,但是音质会差好多,stereo模式音质好但是无法 ...

  5. 2020年7月6日 · WireGuard 教程:WireGuard 的工作原理. 原文链接: https://fuckcloudnative.io/posts/wireguard-docs-theory/. WireGuard 由 Jason Donenfeld 等人用 C 语言编写的一个开源 威屁恩 协议,被视为下一代 威屁恩 协议,旨在解决许多困扰 IPSec/IKEv2 、 Open威屁恩 或 L2TP 等其他 威屁恩 ...

  6. 2024年4月24日 · 1.检查自己系统内置了虚拟机. 这个一般来说都会有,如果没有的话请点开上面的参考链接查看下怎么安装. 2.检查CPU是否开启虚拟化. 打开任务管理器,选择性能,可以看到CPU的栏位内有个虚拟化. 如果虚拟化禁用的,首先确认自己的固件有没有问题,即要进入BIOS打开虚拟化,这里每个人的电脑都不一样,我的华硕的主板,AMD的U,如果一样的可以直接参考下面的链接,华硕的板子进入BIOS的快捷键F2. https://rog.asus.com.cn/support/faq/1045141/ 开启以后重启电脑,打开控制面板按照下图操作选择即可,应该需要安装并重启电脑才生效. 3.是否启动了Docker Desktop Service服务.

  1. 滷味口香糖是什麼 相關

    廣告
  2. 過去一個月已有 超過 1 萬 位使用者造訪過 online.carrefour.com.tw

    補貨囉!精選買一送一、第二件五、箱購等多項優惠,加入會員送好禮,週三限定點數回饋賺很大. 搶便宜就上家樂福!新用戶限定好禮、買一送一、箱購更划算等任你搶,還有週三會員日限定優惠!

  3. 過去一個月已有 超過 1 萬 位使用者造訪過 glorycloud.tv

    Sounds of Heaven from Glory Cloud. Worship Jesus with FREE Worship Music Find Hope, Joy, and Peace