使用uWSGI Web服务器和Nginx部署Python WSGI应用

U3d WebGL使用ToLua 首先我们在编辑器模式下加入Tolua插件,然后配置修改到在编辑器模式下能够正常的运行。 同个U3d 插件Build出WebGL的工程,运行的时候你会发现(有些需要把这个WebGL工程放在一个HttpServer下面,直接本地访问index.html会被拒绝,让你使用http的格式)。 当要加载完的时候会出现 To use dlopen, you need to use Emscripten'... 阅读详情

提供:ZStack云计算

前言

我们在之前的《Python Web服务器对比》文章中介绍过,uWSGI是一个宏大的项目,它能做的事情远远超过提供Web服务。不过很多Web应用的部署仍然青睐于它,因为它功能丰富,容易配置,而且跟Nginx配合的很好。

本文将深入介绍uWSGI的安装,以及在上面部署各种Python框架应用的步骤,无论是中小规模的部署还是生产环境的大规模部署都有所涉及。

本文还将同时介绍Nginx的相关配置(以及原理)。Nginx与uWSGI能够默契配合,针对大多数应用部署都是极好的选择。

了解uWSGI和Nginx的用法

uWSGI是一个充满野心的项目,它提供了各式各样的工具,其功能远远超过了Web应用托管的需求。多年以来,它已经成为了很多系统管理员和开发者们必不可少的工具之一。

Nginx自从0.8.40版本以来开始支持uwsgi协议,从此,在uWSGI上运行的WSGI应用就可以以最佳的方式与Nginx进行通讯,在配置的灵活性和性能方面都十分出色,使得该组合成为很多部署场景下的极佳选择。

uWSGI概述

以下是从《Python Web服务器对比》一文中摘抄的段落:

“虽然uWSGI的命名规范有点让人摸不着头脑,不过它是一个包含众多组件的大项目,致力于为托管服务提供一整套解决方案。uWSGI server作为其组件之一提供了运行Python WSGI应用的功能,该组件支持多种协议,包括其自家的uwsgi wire协议——可以说是SCGI的对应。应对在应用服务器之前使用独立HTTP服务器的需求,NGINX和Cherokee web服务器进行了模块化以支持uWSGI自家的uwsgi协议(该协议在uWSGI上是性能最好的),如此可以直接控制其进程。”

uWSGI的亮点

  • uWSGI提供了WSGI适配器,如此可以完全支持运行在USGI上的Python应用。
  • uWSGI提供了libpython。它在启动时加载应用代码并提供Python解释器的功能,对进来的请求进行语法分析以调用Python callable。
  • uWSGI内置NGINX支持(以及Cherokee+和lighttpd支持)。
  • uWSGI采用C语言编写。
  • 由于uWSGI组件众多,所以如果需要扩展功能的时候会比较方便。
  • 项目处于活跃状态,更新周期很快。
  • 它提供了不同的应用引擎(异步、同步都支持)。
  • 它占用的内存比较少。

配合Nginx进行Web应用部署

Nginx是一个高性能的web服务器/代理服务器/反向代理服务器,因为其轻量、易用和可扩展性(插件)而广受欢迎。其架构的设计使得它具备很强的请求处理能力(理论上是无限的),以至于一些大流量的网站几乎没有其他选择。

注:“处理”连接的技术含义是不丢弃并返回一些结果,一次成功的返回也可能是一条错误信息。要返回用户期待的结果,还需要应用和数据库方面能够保持正常工作。

uWSGI配合Nginx反向代理

很多框架和应用服务器都可以对静态文件的请求(如JavaScript、CSS、图片等)返回来自应用的响应,不过更好的做法是用反向代理服务器(比如Nginx)来处理此类请求,减轻应用服务器的负载,获得更好的性能。

随着应用扩大,可能会需要分布到不同的服务器(云主机)上,此类需求在早期可以用反向代理实现。

此外,Nginx的可扩展性(除了缓存之外,还有failover等其他机制)对于一些比较复杂的Web应用也很有帮助。

一个简单的服务器架构:

客户端请求      ----> Nginx (反向代理)
                        |
                       /|\                           
                      | | `-> App. Server I.   127.0.0.1:8081
                      |  `--> App. Server II.  127.0.0.1:8082
                       `----> App. Server III. 127.0.0.1:8083

注:只监听127.0.0.1的应用只能从本地访问,而如果设置成0.0.0.0就能够从外部访问了。

针对生产环境预备云主机

云主机的预备将执行如下步骤:

  • 更新操作系统
  • 下载安装通用Python工具(pip、virtualenv等)
  • 创建应用运行的虚拟环境(提供了uWSGI等依赖)

有关Python工具的安装可参考这篇文章。

更新操作系统

以下操作将在一台新建的云主机上进行。如果你打算在一台经常使用的云主机上操作,我的建议是切换到一台新主机上。

Debian类系统(Ubuntu、Debian等)的更新:

aptitude    update
aptitude -y upgrade

RHEL类系统的更新:

yum -y update

安装配置Python、pip和virtualenv

CentOS/RHEL系统默认状态下是比较裸的,大部分工具都需要自己安装(比如通过yum)。这里有一篇文章介绍如何在CentOS 6.4和5.8上安装Python 2.7.6和3.3.3。

Ubuntu和Debian的最新版本默认包含了Python解释器,我们只需要安装下面的这些软件包就行:

  • python-dev(开发工具)
  • pip(包管理工具)
  • virtualenv(用于创建隔离的虚拟环境)

python-dev

python-dev是系统级的软件包,包含了用于构建Python模块的开发工具。

使用aptitude进行安装:

aptitude install python-dev

pip

pip软件包管理器可用于安装我们需要的应用。

运行如下命令以安装pip(需要sudo权限):

curl https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py | python -
curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python -
export PATH="/usr/local/bin:$PATH"

virtualenv

每个Python应用最好是跟它的依赖项一起在一个独立的环境下运行。针对一个环境,最简单的描述方式就是一个独立的路径。virtualenv就是应对环境管理的需求而诞生的工具。

使用pip安装virtualenv:

sudo pip install virtualenv

创建独立的虚拟(Python)环境

我们将创建一个环境用于我们的应用部署。如果你之前在本地开发机上的Python应用还没有设置过virtualenv,我建议你创建一个环境,将你的应用以及其依赖项都转移到该环境下。

首先创建一个目录。目录的命名按照自己的需求来,这里使用my_app作为命名。

mkdir my_app

进入该目录,创建一个新的虚拟环境。这里使用my_app_venv作为该环境的命名,你可以根据自己的需要进行命名:

cd my_app
virtualenv my_app_venv

创建一个目录用于存放Python应用模块:

mkdir app

在虚拟环境中激活解释器:

source my_app_venv/bin/activate

至此,你的目录结构应该是这样的:

my_app              # 主目录
  |
  |=== my_app_venv  # 虚拟环境目录,包含Python解释器
  |=== app          # 应用模块所在目录
  |..
  |.

下载安装uWSGI

应用管理的最佳实践之一是在虚拟环境下包含所有的应用依赖项,所以我们之后的下载安装都要在刚才创建的环境中进行。

在刚才的虚拟环境目录下执行安装操作,软件会安装在该虚拟环境下。如果执行安装操作时不在任何虚拟环境下,则会全局生效,而这是我们不想要的。请随时记得使用virtualenv。

用pip安装uWSGI:

pip install uwsgi

下载安装Nginx

CentOS/RHEL用户可参考这篇文章用yum安装Nginx。Ubuntu/Debian用户请执行如下命令(也可参考这篇文章):

sudo aptitude install nginx

然后启动nginx:

sudo service nginx start

Nginx服务可通过如下命令停止:

sudo service nginx stop

以及重启(每次更改Nginx配置后都需要重启):

sudo service nginx restart

用uWSGI托管Python WSGI应用

uWSGI的用法跟其他应用容器没有太大差别,它需要你的应用提供一个接入点(callable)。在启动时,这个callable与其他的配置变量一起被传递给uWSGI,然后uWSGI开始工作。当请求到达uWSGI时,它对请求进行处理,然后将结果传递给应用控制器。

架构:

........
      /|\                           
     | | `-> App. Server I.   127.0.0.1:8080  <--> Application
     |  `--> App. Server II.  127.0.0.1:8081  <--> Application
      .....

WSGI

WSGI是web服务器和应用之间的一个接口,以确保不同的服务器和应用(框架)之间的通讯满足一组标准,从而满足兼容性的需求(比如从生产环境切换到生产环境的场景)。这在现代软件开发中很有必要。(有关WSGI的详细说明可参考这篇文章。)

WSGI应用对象(Callable):“wsgi.py”

如上所述,运行在WSGI上的Web服务器需要一个应用对象(也就是你的应用的callable)。大部分框架和应用会包含一个wsgi.py作为这个对象。

下面,我们会创建一个wsgi.py,将其导入应用以提供给uWSGI。你也可以使用其他的文件名,不过wsgi.py是最常用的(比如Django使用的就是这个文件名。)

创建wsgi.py文件(我使用nano,你可以使用自己习惯的编辑器):

nano wsgi.py

将基本的WSGI应用代码复制粘贴到该文件内(此处是最基本的示范文件,到时候你需要把自己应用的内容替换进来):

def application(env, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    return ["Hello!"]

每次请求到达服务器时,服务器在解析URL的时候(比如 mysite.tld/controller/method/variable)都会使用这个callable来运行应用的请求处理器(也就是控制器)。

代码粘贴完毕后,保存退出。至此,你的应用目录应该是如下结构:

my_app              # Main Folder to Contain Everything Together
  |
  |=== my_app_venv  # V. Env. folder with the Python Int.
  |=== app          # Your application module
  |
  |--- wsgi.py      # File containing application callable
  |..
  |.

运行服务器

uWSGI的配置项众多,我们先从最简单的配置开始。

uWSGI的常规用法如下:

uwsgi [option] [option 2] .. -w [wsgi file with app. callable]

从wsgi.py运行uWSGI:

uwsgi --socket 127.0.0.1:8080 --protocol=http -w wsgi

该命令会在前台运行服务,用CTRL+C快捷键停止。后台运行的命令如下:

uwsgi --socket 127.0.0.1:8080 --protocol=http -w wsgi &

注意:稍后配置Nginx的时候需要移除--protocol=http这一部分,否则Nginx和uWSGI之间会无法通讯。

应用在后台运行之后,我们需要进程管理器来对其进行管理。

管理uWSGI服务器进程

进程管理的命令列表如下:

  • SIGHUP -HUP 正常重启worker和应用
  • SIGTERM -TERM 强制重启
  • SIGINT -INT 和 SIGQUIT -QUIT 立刻终止所有worker
  • SIGUSR1 -USR1 输出状态数据(stdout)
  • SIGUSR2 -USR2 输出worker状态
  • SIGURG -URG 从快照恢复
  • SIGTSTP -TSTP 暂停或恢复一个实例的运行
  • SIGWINCH -WINCH 唤醒之前被syscall阻塞的worker

示范:用SIGHUP重启服务

该命令按正常方式重启服务,即,它会等待worker完成当前的任务,然后将其终止。下次启动时会继承本次的配置。

kill -HUP [PID]

你也可以不使用PID,而使用pidfile选项通过文件控制进程。

示范:用SIGINT停止服务

服务和进程的停止需要INT信号,该命令会终止所有后台中运行的进程。

kill -INT [PID]

配置Nginx

接下来我们将配置Nginx以使其与uWSGI服务器对话。打开nginx.conf文件进行编辑:

sudo nano /etc/nginx/nginx.conf

将如下内容复制粘贴到文件中以启用反向代理功能。(有关SSL证书的配置可参考这篇文章。)

针对Web应用的配置示范:

worker_processes 1;

events {

    worker_connections 1024;

}

http {

    sendfile on;

    gzip              on;
    gzip_http_version 1.0;
    gzip_proxied      any;
    gzip_min_length   500;
    gzip_disable      "MSIE [1-6]\.";
    gzip_types        text/plain text/xml text/css
                      text/comma-separated-values
                      text/javascript
                      application/x-javascript
                      application/atom+xml;

    # Configuration containing list of application servers
    upstream uwsgicluster {

        server 127.0.0.1:8080;
        # server 127.0.0.1:8081;
        # ..
        # .

    }

    # Configuration for Nginx
    server {

        # Running port
        listen 80;

        # Settings to by-pass for static files 
        location ^~ /static/  {

            # Example:
            # root /full/path/to/application/static/file/dir;
            root /app/static/;

        }

        # Serve a static file (ex. favico) outside static dir.
        location = /favico.ico  {

            root /app/favico.ico;

        }

        # Proxying connections to application servers
        location / {

            include            uwsgi_params;
            uwsgi_pass         uwsgicluster;

            proxy_redirect     off;
            proxy_set_header   Host $host;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Host $server_name;

        }
    }
}

保存退出,运行如下命令重启Nginx以激活变更的配置:

sudo service nginx stop
sudo service nginx start

有关Nginx配置的更多说明,可参考这篇文章。

配置uWSGI

uWSGI在启动时有多种方法接收必要的配置(如运行在哪个socket、进程的数量、主进程设置等),下面将介绍其中三种:

  • 以参数方式传递配置变量
  • 使用.ini文件
  • 使用.json文件

注:uWSGI还提供了若干协议以将这些配置文件转换成stdin和HTTP。

方案1:以参数方式传递配置变量

最基础的方法,但容易造成混乱且不易管理。该方法的使用就跟其他shell脚本一样,将配置作为参数放到命令中。

用法:

# uwsgi [option] [option 2] .. -w [wsgi.py with application callable]

# Simple server running *wsgi*
uwsgi --socket 127.0.0.1:8080 -w wsgi

# Running Pyramid (Paster) applications
uwsgi --ini-paste production.ini

# Running web2py applications
uwsgi --pythonpath /path/to/app --module wsgihandler

# Running WSGI application with specific module / callable names
uwsgi --module wsgi_module_name --callable application_callable_name
uwsgi -w wsgi_module_name:application_callable_name

更完整的列表可参考其官方文档页面。

方案2:使用.ini文件

使用.ini文件的方案可能比第一种好一些,此类文件的结构很容易理解,只需要每次uWSGI启动脚本执行的时候一起加载即可生效。

.ini文件示范(example_config.ini):

[uwsgi]
# -------------
# Settings:
# key = value
# Comments >> #
# -------------

# socket = [addr:port]
socket = 127.0.0.1:8080

# Base application directory
# chdir = /full/path
chdir  = /my_app

# WSGI module and callable
# module = [wsgi_module_name]:[application_callable_name]
module = app:application

# master = [master process (true of false)]
master = true

# processes = [number of processes]
processes = 5

..

用法:

uwsgi --ini example_config.ini    

方案3:使用.json文件

Working with .json files is, apart from the structure, same as the examples shown above.

跟上面的用法差不多,只是文件结构不一样。

.json文件示范(example_config.json):

{
    "uwsgi": {
        "socket": ["127.0.0.1:8080"],
        "module": "my_app:app",
        "master": true,
        "processes": 5,
    }
}

用法:

uwsgi --json example_config.json

有关uWSGI配置的更多信息可参考其官方文档页面。

uWSGI的常用配置

uWSGI默认是可以通吃各种框架/应用/平台的,不过有时候我们可能还是需要根据自己的需求指定一些配置。

根据uWSGI文档的说明,可能的配置组合几乎是无限的,本文只能讨论一些最常用的或者最关键的部分,并对其实现进行说明。

下面的示范是配合.ini文件使用的。使用.json文件的同学需要将其修改成json的格式。

Sockets

http-socket

设定uWSGI绑定的HTTP socket,如:

http-socket = :8080

socket

通过默认协议将uWSGI绑定到特定的socket,如:

socket = 127.0.0.1:8080

processes (workers)

设定可用于处理请求的进程数,如:

processes = 5

protocol

默认协议是uwsgi,这个配置项可以对其进行修改,如:

protocol = http

管理

master

用于启用或禁用uWSGI主进程。主进程可对其他接收请求的进程进行管理,这样有很多好处,比如无需打扰sockets就能优雅的重启workers,从而避免当机时间。配置方法:

master = true

max-requests

设定最大可以处理的请求数。如果你担心内存泄露而又没有更好的预防办法,可以考虑这个配置项。用法:

max-requests = 1001

threads

设定每个进程内运行的线程数量(rethread模式)。可以配合processes设置项使用以调整并发的规模。用法:

threads = 2

日志

disable-logging

关闭日志功能。用法:

disable-logging = true

uWSGI processes

procname

可自行设定进程名称,如:

procname = My Application

uid

指定uWSGI服务器运行的用户uid,如:

uid = 1001

gid

指定uWSGI服务器运行的用户组gid,如:

gid = 555

vacuum

退出时移除所有生成的pidfile/socket。

daemonize

将uWSGI设置为守护进程,并将信息写入指定的参数(也就是日志文件)。用法:

daemonize = /tmp/uwsgi_daemonize.log

pidfile

让uWSGI将进程的PID写入指定文件。对于uWSGI进程管理很有用。用法:

pidfile = /tmp/proj_pid.pid

其他

harakiri

设置一个进程在被终止或回收(一般由内存管理或进程管理服务触发)之前被允许存活的最大时间。用法:

harakiri = 30

针对上百个配置项的完整配置说明请参考官方文档。

延伸阅读:

防火墙

SSH加固

创建报警

每日的访问日志监控

本文来源自DigitalOcean Community。英文原文:How to Deploy Python WSGI Applications Using uWSGI Web Server with Nginx by O.S. Tezer

翻译:lazycai

MAC下SecureCRT 8.0.4破解版远程连接工具的安装与配置 一 SCRT的软件的安装:首先访问 http://xclient.info/s/securecrt.html?_=4365bb5cf097dc2c135a57c2ce30b264 选择8.0.4的版本进行下载,安装后将图标拖入application中,如下图所示 这时候需要进行以下几个步骤进行激活: 详细做法是: 一:打开mac的终端输入sudo spctl --master-d... 阅读详情

相关推荐

【AUCell打分】:评估一个基因集在单细胞转录组的每个细胞中特定的活性程度

AUCell使用曲线下面积来计算输入基因集的一个有意义的基因子集是否在每个细胞的表达基因中富集。AUC 分数在所有细胞中的分布允许探索特征的相对表达。由于评分方法是基于排名的,因此 AUCell 与基因表达单位和归一化程序无关。此外,由于细胞是单独评估的,因此可以很容易地应用于更大的数据集。

weixin_40695088的博客 1万+

企业级Windows10下使用Apache部署后端Flask解决方案,具体为Python3.6.6+Apache2434+mod_wsgi部署Flask【各个项目包独立 可跑多个Flask项目】

我选用的是python3.6.6+apache2.4.34(Win64)+mod_wsgi-4.6.8+ap24vc14-cp36-cp36m-win_amd64.whl(这个网上已经下载不到了,这是公司遗留的)一个虚拟环境的flask项目,放在apache上面启动。使用postman访问接口验证。1:用虚拟环境装包后,在放到apache上跑,即每个项目的包环境隔离开来。2:安装mod_wsgi,并部署到apache里面。virtualenv重新创建。

程序员象漂亮的博客 2849

MOSS-TTS开源语音合成家族:从架构解析到生产部署实战

语音合成(TTS)技术旨在让计算机将文本转换为自然流畅的语音,其核心原理通常涉及文本分析、声学模型和声码器等模块。近年来,基于深度学习的端到端TTS模型,特别是结合残差向量量化(RVQ)和Transformer架构的方案,显著提升了合成语音的自然度和效率。这类技术的价值在于能够广泛应用于有声内容创作、智能助手、无障碍服务以及实时交互等场景。本文聚焦于开源的MOSS-TTS家族,它通过模块化设计,针对高保真合成、多角色对话、实时交互等不同需求提供了专用模型。文章深入解析了其底层的Delay与Local两种架构

weixin_28745565的博客 422

使用Python创建websocket服务端并给出不同客户端的请求

最后的最后由本人水平所限,难免有错误以及不足之处, 屏幕前的靓仔靓女们 如有发现,恳请指出!你轻轻地点了个赞,那将在我的心里世界增添一颗明亮而耀眼的星!

编辑编辑器 1万+

【PDN仿真笔记9-使用Sigrity PowerDC进行IR Drop仿真的方法】

使用Sigrity PowerDC进行IR Drop进行仿真的方法

qq_42682826的博客 8008

HFSS入门学习笔记——微带一分四功分器的设计与仿真

功率分配器是将输入信号功率分成相等或不相等的几路功率输出的一种多端口无源微波网络,用于功率分配和功率合成。工程上常用的微带功分器有T型功分器和威尔金森功分器。经典的威尔金森功分器有几个缺点:①、多应用于低频段,高频段时,波长会与隔离电阻的尺寸相比拟,此时需要考虑电阻的分布参数效应;②、大功率应用时,隔离电阻的耗散功率要很大,因此隔离电阻的体积也会比较大。

weixin_42126696的博客 2万+

WSGI nginx

1.什么是WSGI WSGI是web server gateway interface简写。 是python应用程序或框架的和web服务器之间的接口。 WSGI 接口有服务端和应用端两部分,服务端也可以叫网关端,应用端也叫框架端。服务端调用一个由应用端提供的可调用对象。如何提供这个对象,由服务端决定。例如某些服务器或者网关需要应用的部署者写一段脚本,以创建服务器或者网关的实例,并且为这个实例提供一个应用实例。另一些服务器或者网关则可能使用配置文件或其他方法以指定应用实例应该从哪里导入或获取。 WSGI对

weixin_44826484的博客 863

HTTPDebugger实战:iTunes登录协议抓包与签名验证全解析

HTTPS抓包是分析客户端与服务端交互的重要手段,其原理是通过中间人证书解密TLS流量,从而观察请求与响应细节。在调试iTunes登录协议时,抓包能帮助我们定位签名验证失败、x-timestamp过期等棘手问题。然而,许多教程中常见的mumu模拟器抓包、fiddler手机抓包或charles抓包unknown问题,往往让新手陷入工具陷阱。本文以HTTPDebugger为切入点,从TLS握手到认证请求,系统拆解iTunes登录协议的关键字段与签名机制,覆盖证书配置、进程监听、域名过滤等实战经验,辅以Apple

weixin_30768881的博客 199

协议:WSGI,uWSGI,Nginx,CGI协议简介

当咱们部署完一个应用程序,浏览网页时具体的过程是怎样的呢?首先咱们得有一个 Web 服务器来处理 HTTP 协议的内容,Web 服务器得到客户端的请求,交给应用程序,应用程序处理完,返回给 Web 服务器,这时 Web 服务器再返回给客户端。Web 服务器与应用程序之间显然要进行交互,这时就出现了不少 Web 服务器与应用程序之间交互的规范,最先出现的是 CGI,后来又出现了改进 CGI 性能的FasgCGI,Java 专用的 Servlet 规范,Python 专用的 WSGI 规范等等。

GIS摆渡人 1426

Workbench中直接调用ICEM CFD进行网格划分

自从ANSYS 12.0之后,ICEM CFD就从Workbench中被分离出去,作为一个独立的程序使用了。取而代之的是Meshing模块。 在Meshing的属性节点菜单中右键点击Mesh,选择Insert > Method,插入方法。 选择需要划分网格的几何体,点击apply。此时Geometry显示为1 Body。 设置Method为MultiZone,如果不设置成这个的话,找不到进入ICEM CFD的入口。如果要划分四面体,可以在Mapped Mesh Type中选择其他类型。

Yan的博客 6513

SAP MM | 批次管理:OMCT 批次级别设置与自动寻批机制

SAP批次管理中的批次级别(OMCT配置)是核心设置,决定批次号的唯一性范围。推荐选择“物料级别唯一”,避免跨工厂调拨问题;若配置错误,后期修改需复杂数据转换。此外,通过SD模块的自动批次决定功能(VCH1策略),可实现FIFO/FEFO出库规则,需后台激活并配置查找策略。批次管理需跨模块协作(MM/PP/SD),确保从生产到出库的全流程精准追踪。**关键点:**批次级别需在项目初期锁定,避免后期修改风险。

RiverRia的专栏 968

python socketserver handle方法传递参数样例

目录 实现思路 最终实现的完整的代码(demo) 实现思路 从官方文档及其他地方并未找到合适的handle传参的方法,因此考虑重写部分类或类方法。 如果使用TCPServer启动的服务实例,则我们在注册server实例的时候就应该将参数传递过去,因此我们考虑重写下TCPServer的__init__方法: 以增加一个info参数为例 # 重写TCPServer构造函数 class MyTCPServer(TCPServer): def __init__(self, server_

Gu_f优快云的博客 2335

基于卷积神经网络CNN实现电力负荷多变量时序预测(PyTorch版)

随着智能电网的发展,精准的电力负荷预测对能源调度和电网稳定具有重要意义。本文基于PyTorch框架,提出一种基于卷积神经网络(CNN)的多变量时间序列预测模型,用于电力负荷的短期预测。

时序笔记 989

uwsgi详解

uwsgi是什么? WSGI,全称 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,是为 Python 语言定义的 Web 服务器和 Web 应用程序或框架之间的一种简单而通用的接口。 WSGI 的官方定义是,the Python Web Server Gateway Interface。从名字就可以看出来,这东西是一个Gateway,也就是网关。网关的作用就是在协议之间进行转换。 很多框架都自带了 WSG

weixin_55205414的博客 5108

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Gunicorn和uWSGI的区别

gunicorn 和 uWSGI 是两种常见的 WSGI HTTP 服务器,用于部署 Python Web 应用程序(如 Django 和 Flask)。它们的功能有许多重叠之处,但也有明显的区别,适用于不同的使用场景和需求。因为篇幅的关系统,风云将gunicorn和uWSGI单独发文分析,昨天就提到了它们各有千秋,大家要根据项目实际情况、应用规模和性能需求来选择,充分发挥他们的特点,实现高效 Python Web 部署。使用 uWSGI 协议,性能更高,需额外配置。用户友好,文档丰富,流行度高。

网络风云的博客 7501

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

了解django部署(Django + Uwsgi + Nginx)

首先了解下基本概念:   1 WSGI   WSGI:全称是Web Server Gateway Interface,是python应用程序或者框架和web服务器之间的一种接口,被广泛接受。WSGI不是服务器,python模块,框架,api或者任何软件,它更像是一种规范。描述web server如何和web application通信的规范。要实现WSGI协议,必须同时实现web s...

an13083611535的博客 151

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

python项目部署之nginx+uwsgi详解

在 Python 项目部署中,nginx + uwsgi 是一种流行的部署方式。通过结合使用这两个工具,可以有效地提高 Python 项目的性能和可靠性。

大白说 3794

Django+Uwsgi+Nginx的生产环境部署

**1、什么是WSGI(WSGI是一种*python专用的*web协议 和http类似): 1. WSGI是一种规范,它定义了使用python编写的web app(django)与web server(uWSGI)之间接口格式,实现web app与web server间的解耦。 2. WSGI 没有官方的实现, 因为WSGI更像一个协议. 只要遵照这些协议,WSGI应用(Application)都可以在任何服务器(Server)上运行 3. **WSGI****实质:**WSGI是一种描述web服务器(如n

qq_45618388的博客 184

CGI、WSGI、uWSGI、ASGI概念和Django项目部署架构的关系

CGI、WSGI、uWSGI、ASGI概念和Django项目部署架构的关系

cuijiekun的博客 4638

WSGI协议

WSGI协议 首先弄清下面几个概念: WSGI:全称是Web Server Gateway Interface,WSGI不是服务器,python模块,框架,API或者任何软件,只是一种规范,描述web server如何与web application通信的规范。server和application的规范在PEP 3333中有具体描述。要实现WSGI协议,必须同时实现web server和web ...

Hi~ o(* ̄▽ ̄*)ブ 333

超强Python指南python-guide:WSGI服务器选择与性能对比

Python最佳实践指南python-guide为开发者提供了全面的WSGI服务器选择建议和性能对比分析。作为Python开发者的必备参考,这份指南详细比较了Gunicorn、uWSGI和Waitress等主流WSGI服务器的特性与适用场景。🛠️ ## 什么是WSGI服务器? Web Server Gateway Interface(WSGI)是Python Web应用程序与Web服务器之间

gitblog_00535的博客 995

python项目部署

浅析Python项目部署 基础理论 关于Web服务器和应用服务器 基本概念: Web服务器主要功能就是存储、处理、传递网页,客户端和服务器之间基于HTTP协议进行通信。 应用服务器主要是处理动态请求,调用相应的对象完成对请求的处理,返回响应的结果。 两者之间的区别: Web服务器主要是以HTTP为核心,WEB UI为向导的应用,处理一些静态请求。 应用服务器虽然也支持HTTP协议,但应用服务器可以通过很多协议为应用程序提供商业逻辑。 Python项目部署架构 在我们平时搭建一个P...

HHlingling的博客 2167

uwsgi和wsgi

uwsgi wsgi:一种实现python解析的通用接口标准/协议,是一种通用的接口标准或者接口协议,实现了python web程序与服务器之间交互的通用性。 利用它,web.py或bottle或者django等等的python web开发框架,就可以轻松地部署在不同的web server上了; uwsgi:同WSGI一样是一种通信协议 uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型,它与WSGI相比是两样东西。 uWSGI :一种python web server或称为Serve

小范的博客 1060

nginx和uWSGI是什么,它们有什么区别?

这两个工具是中的黄金搭档,尤其在部署 Python 后端(如 Django、Flask)时经常成对出现。它们和 AI 模型部署也有紧密关系——。为了让你秒懂,我们先看一个最经典的类比,再拆解它们的分工。

yongcui999的博客 286

nginx+uWsgi应用部署方式

uWSGI 是一个快速的、纯C语言开发的、自维护的、对开发者友好的,旨在提供专业的 Python web应用发布和开发。可使用 C/C++/Objective-C 来为 uWSGI 编写插件。

thinker 1386

关于WSGI、uWSGI和nginx的系统总结

(本文参考众多博客、书籍等资料,便于自己查阅和大家系统了解相关知识) 一、WSGI 在说WSGI之前,有必要介绍下Web服务的过程。当我们使用浏览器访问一个网址时,简单来说就是请求一个html文档,过程如下: 1. 浏览器向服务器发送一个HTTP请求(即HTTP请求报文),请求服务器给我这个html文档。 2. 服务器收到后,将html文档的内容封装进HTTP响应报文中,并发给浏览器。 3. 浏览...

weixin_43523521的博客 432
上一篇: 如何在Ubuntu 14.04上利用Keepalived与Floating IP设置高可用性Web服务器
下一篇: 如何在Ubuntu 14.04上利用HAProxy为WordPress与Nginx构建7层负载均衡器
普通网友
博客等级 码龄10年 769粉丝 269原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值