文章目录

  • 一、概述
    • 1.1 背景
  • 二、详情
    • 2.1 uwsgi_pass与uwsgi
    • 2.2 proxy_pass 与gunicorn
    • 2.3 uvicorn
  • 三、总结

一、概述

1.1 背景

在使用python开发好web程序后,面对一个开机自启动维护的配置的编写,至于使用何组件,我们有三种选择,第一种django使用runserver,貌似支持websocket长连接,对内服务,小组件可以使用;

第二、第三就是gunicorn和uwsgi了。但是这两个有什么区别呢?下面从nginx配置入手讲起,感觉需要深入了解认识uwsgi_pass 和proxy_pass两个概念(nginx配置)。

二、详情

注意不要把uwsgi协议和uWSGI服务器混淆。

2.1 uwsgi_pass与uwsgi

语法:uwsgi_pass uri
默认值:none
使用字段:server, location
为一个uwsgi兼容服务器设置监听地址(tcp套接字,unix套接字或者流块)

一般结合uwsgi_params使用,更高级结合include uwsgi_params使用

语法:uwsgi_param key value
默认值:none
使用字段:server, location
为一个uwsgi请求增加一对key/value值。

示例,下图是一个默认配置:

进阶配置最终

2.2 proxy_pass 与gunicorn

语法: proxy_pass URL;

场景: location, if in location, limit_except

说明: 设置后端代理服务器的协议(protocol)和地址(address),以及location中可以匹配的一个可选的URI。协议可以是"http"或"https"。地址可以是一个域名或ip地址和端口,或者一个 unix-domain socket 路径。

详情参见:http://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_pass

使用图例:

2.3 uvicorn

异步是大趋势,asgi的服务的使用也会慢慢进入性能要求的视野,提前学习。

nginx配置则同gunicorn,需要注意这个组件。安装依赖uvloop和httptools。

本人使用示例:

三、总结

uvicorn启动其实并没有任何异步特性加成,后续还需要自己结合async/await编程。在多线程爬虫这种IO密集型程序上才会最大发挥其马力。

gunicorn、uwsgi、uvicorn认识相关推荐

  1. 闪电侠 Uvicorn

    阅读本文大概需要 3.6 分钟. 什么是 Uvicorn ? 答:Uvicorn 是基于 uvloop 和 httptools 构建的非常快速的 ASGI 服务器. 什么是 uvloop 和 http ...

  2. Django3.0新鲜出炉!全面解读新特性,ASGI真香实锤,不来了解一下?

    真的机缘巧合! 写这篇文章完全是机缘巧合,想想已经好长时间没有关注过Django了,虽然Django一直霸占着Python Web开发界的王座,但是由于各种原因自从使用Asyncio以来一直使用Aio ...

  3. python asyncio回调函数_最近用 Python 的 asyncio,有好多不懂。。

    15 2017-03-14 19:35:58 +08:00   16 说下我对这 python 这几种 web 模型的理解吧: 首先是 http server + wsgi server(contai ...

  4. python flask源码解析_用尽洪荒之力学习Flask源码

    [TOC] 一直想做源码阅读这件事,总感觉难度太高时间太少,可望不可见.最近正好时间充裕,决定试试做一下,并记录一下学习心得. 首先说明一下,本文研究的Flask版本是0.12. 首先做个小示例,在p ...

  5. WSGI 是什么?和nginx有什么关系?

    回顾一下,我们在用python做web开发的时候,一般基于某个web框架来开发,django或者是flask等其它框架.业务开发完成后,就要部署到某台服务器中用于提供对外的访问. 这时候你去网上一搜, ...

  6. 第9章 Python Web 框架考察点

    Python WSGI与web框架常考点 WSGI 常见Web框架 ◆什么是WSGI? ◆常用的 Python Web框架Dang/Fask/Tornado对比 ◆web框架的组成(淡化框架,加强基础 ...

  7. fastapi日志重复打印_【FastAPI】踩坑总结

    阅读目录 一.部署之殇 二.日志之殇 三.中间件之殇 四.配置文件之殇 五.其它 一.部署之殇 1 linux后台启动 nohup uvicorn main:app --host 0.0.0.0 -- ...

  8. python官网网址是什么意思_大家都是怎么部署python网站的?

    flask+gunicorn+nginx 作者:Python小白 链接:centos下通过gunicorn和nginx部署Flask项目 - Python小白的文章 - 知乎专栏 来源:知乎 著作权归 ...

  9. 关于wsgi协议的理解

    基础概念 首先要了解 WSGI 规范的概念,WSGI(Web Server Gateway Interface)规范描述了web server(Gunicorn,uWSGI等)如何与web appli ...

  10. python web 常用库

    # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.[awesome-python](https://github.com/v ...

最新文章

  1. 在Asp.Net中从sqlserver检索(retrieve)图片
  2. 英语发音规则---N字母
  3. leetcode-34-在排序数组中查找元素的第一个和最后一个位置
  4. concurrent.futures模块(进程池线程池)
  5. 数据量大mysql当月_mysql 1.5倍数据量导致20多倍的执行时间?
  6. 1-2. linux系统结构
  7. Python内存管理方式和垃圾回收算法解析
  8. .net 刷新页面防止表单二次提交
  9. 总结:SpringMVC 中 GET 和 POST 方式请求中的中文乱码问题
  10. 逆水寒7月19服务器维护,逆水寒7月19日更新维护公告 更新内容汇总
  11. 基于vue的video播放组件
  12. 电磁感应理论之父,法拉第传奇
  13. [心情]一落千丈的反差
  14. java俄罗斯方块程序设计报告_java课程设计实验报告俄罗斯方块
  15. 【薪酬调研报告】2019TMT标杆企业高管薪酬与激励调研报告—德勤管理咨询
  16. 函数发生器的使用方法
  17. (28)部署强命名程序集到GAC
  18. 关于 Android 中 TabLayout 下划线适配文字长度解析(附清晰详细的源码解析)
  19. 为啥Spring事务失效了,你踩坑了吗?
  20. 【读书笔记】UML+OOPC嵌入式C语言开发精讲-认识对象

热门文章

  1. mysql数据库的在线数据备份与数据恢复
  2. Memcache是什么
  3. 瀑布模型的问题是什么?
  4. SQL server身份验证
  5. 泛微荣获统信创客北京·鲲鹏应用创新大赛2022北京区域三等奖
  6. golang的panic
  7. Android之ContentProvider
  8. windows10 javac错误:javac不是内部或外部命令 也不是可运行的程序
  9. 软考-嵌入式系统设计师:[网络安全:笔记(六)]
  10. EMV技术学习和研究(一)开篇