非常教程

Python 3 教程教程

Python uWSGI 安装配置

Python uWSGI 安装配置

Python uWSGI 安装配置

本文主要介绍如何部署简单的 WSGI 应用和常见的 Web 框架。

以 Ubuntu/Debian 为例,先安装依赖包:

apt-get install build-essential python-dev

Python 安装 uWSGI

1、通过 pip 命令:

pip install uwsgi

2、下载安装脚本:

curl http://uwsgi.it/install | bash -s default /tmp/uwsgi

将 uWSGI 二进制安装到 /tmp/uwsgi ,你可以修改它。

3、源代码安装:

wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz
tar zxvf uwsgi-latest.tar.gz
cd uwsgi-latest
make

安装完成后,在当前目录下,你会获得一个 uwsgi 二进制文件。


第一个 WSGI 应用

让我们从一个简单的 "Hello World" 开始,创建文件 foobar.py,代码如下:

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

uWSGI Python 加载器将会搜索的默认函数 application

接下来我们启动 uWSGI 来运行一个 HTTP 服务器,将程序部署在HTTP端口 9090 上:

uwsgi --http :9090 --wsgi-file foobar.py

添加并发和监控

默认情况下,uWSGI 启动一个单一的进程和一个单一的线程。

你可以用 --processes 选项添加更多的进程,或者使用 --threads 选项添加更多的线程 ,也可以两者同时使用。

uwsgi --http :9090 --wsgi-file foobar.py --master --processes 4 --threads 2

以上命令将会生成 4 个进程, 每个进程有 2 个线程。

如果你要执行监控任务,可以使用 stats 子系统,监控的数据格式是 JSON:

uwsgi --http :9090 --wsgi-file foobar.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191

我们可以安装 uwsgitop(类似 Linux top 命令) 来查看监控数据:

pip install uwsgitop

结合 Web 服务器使用

我们可以将 uWSGI 和 Nginx Web 服务器结合使用,实现更高的并发性能。

一个常用的nginx配置如下:

location / {
    include uwsgi_params;
    uwsgi_pass 127.0.0.1:3031;
}

以上代码表示使用 nginx 接收的 Web 请求传递给端口为 3031 的 uWSGI 服务来处理。

现在,我们可以生成 uWSGI 来本地使用 uwsgi 协议:

uwsgi --socket 127.0.0.1:3031 --wsgi-file foobar.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191

如果你的 Web 服务器使用 HTTP,那么你必须告诉 uWSGI 本地使用 http 协议 (这与会自己生成一个代理的–http不同):

uwsgi --http-socket 127.0.0.1:3031 --wsgi-file foobar.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191

部署 Django

Django 是最常使用的 Python web 框架,假设 Django 项目位于 /home/foobar/myproject:

uwsgi --socket 127.0.0.1:3031 --chdir /home/foobar/myproject/ --wsgi-file myproject/wsgi.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191

--chdir 用于指定项目路径。

我们可以把以上的命令弄成一个 yourfile.ini 配置文件:

[uwsgi]
socket = 127.0.0.1:3031
chdir = /home/foobar/myproject/
wsgi-file = myproject/wsgi.py
processes = 4
threads = 2
stats = 127.0.0.1:9191

接下来你只需要执行以下命令即可:

uwsgi yourfile.ini

部署 Flask

Flask 是一个流行的 Python web 框架。

创建文件 myflaskapp.py ,代码如下:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return "<span style='color:red'>I am app 1</span>"

执行以下命令:

uwsgi --socket 127.0.0.1:3031 --wsgi-file myflaskapp.py --callable app --processes 4 --threads 2 --stats 127.0.0.1:9191
Python uWSGI 安装配置
Python 3 教程

Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下兼容。

Python 3 教程目录

1.Python3 函数
2.Python3 编程第一步
3.Python3 列表
4.Python3 字符串
5.Python3 数字(Number)
6.Python3 注释
7.Python3 解释器
8.Python3 模块
9.Python3 数据结构
10.Python3 标准库概览
11.Python3 基础语法
12.Python 随机数生成
13.Python 计算三角形的面积
14.Python 二次方程
15.Python 平方根
16.Python 数字求和
17.Python Hello World 实例
18.Python3 实例
19.Python 九九乘法表
20.Python 阶乘实例
21.Python 质数判断
22.Python 获取最大值函数
23.Python 判断闰年
24.Python 判断奇数偶数
25.Python 判断字符串是否为数字
26.Python if 语句
27.Python 交换变量
28.Python 摄氏温度转华氏温度
29.Python 文件 IO
30.Python 使用递归斐波那契数列
31.Python 生成日历
32.Python 简单计算器实现
33.Python 最小公倍数算法
34.Python 最大公约数算法
35.Python ASCII码与字符相互转换
36.Python 十进制转二进制、八进制、十六进制
37.Python 阿姆斯特朗数
38.Python 斐波那契数列
39.Python list 常用操作
40.Python 获取昨天日期
41.Python 计算每个月天数
42.Python 字符串大小写转换
43.Python 字符串判断
44.Python3 ceil() 函数
45.Python3 abs() 函数
46.Python3 运算符
47.Python3 命令行参数
48.Python3 round() 函数
49.Python3 pow() 函数
50.Python3 modf() 函数
51.Python3 min() 函数
52.Python3 max() 函数
53.Python3 log10() 函数
54.Python3 log() 函数
55.Python3 floor() 函数
56.Python3 fabs() 函数
57.Python3 exp() 函数
58.Python3 atan() 函数
59.Python3 asin() 函数
60.Python3 acos() 函数
61.Python3 uniform() 函数
62.Python3 shuffle() 函数
63.Python3 seed() 函数
64.Python3 random() 函数
65.Python3 randrange() 函数
66.Python3 choice() 函数
67.Python3 sqrt() 函数
68.Python3 count()方法
69.Python3 center()方法
70.Python3 capitalize()方法
71.Python3 radians() 函数
72.Python3 degrees() 函数
73.Python3 tan() 函数
74.Python3 sin() 函数
75.Python3 hypot() 函数
76.Python3 cos() 函数
77.Python3 atan2() 函数
78.Python3 islower()方法
79.Python3 isdigit()方法
80.Python3 isalpha()方法
81.Python3 isalnum()方法
82.Python3 index()方法
83.Python3 find()方法
84.Python3 expandtabs()方法
85.Python3 endswith()方法
86.Python3 encode()方法
87.Python3 bytes.decode()方法
88.Python3 maketrans()方法
89.Python3 lstrip()方法
90.Python3 lower()方法
91.Python3 len()方法
92.Python3 ljust()方法
93.Python3 join()方法
94.Python3 isupper()方法
95.Python3 istitle()方法
96.Python3 isspace()方法
97.Python3 isnumeric()方法
98.Python3 startswith()方法
99.Python3 splitlines()方法
100.Python3 split() 方法