精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Python 之 WSGI、uWSGI 和 uwsgi 介紹

開發(fā) 前端
WSGI 、uWSGI 和 uwsgi 是三個相關(guān)的概念,它們是在 Web 應(yīng)用程序開發(fā)中使用的不同的工具和協(xié)議。

一、概述

WSGI 、uWSGI 和 uwsgi 是三個相關(guān)的概念,它們是在 Web 應(yīng)用程序開發(fā)中使用的不同的工具和協(xié)議。下面是它們的詳細介紹:

  • WSGI(Web Server Gateway Interface):WSGI 是一個 Python Web 應(yīng)用程序與 Web 服務(wù)器之間的接口規(guī)范,它定義了應(yīng)用程序和服務(wù)器之間的標準接口,使得應(yīng)用程序可以在不同的 Web 服務(wù)器上運行。WSGI 規(guī)范規(guī)定了應(yīng)用程序必須實現(xiàn)的接口方法和服務(wù)器需要支持的方法。WSGI 協(xié)議使得不同的 Python Web 框架(例如 Flask、Django 等)能夠在不同的 Web 服務(wù)器上運行,這些服務(wù)器可以是 Apache、Nginx 等。
  • uWSGI:uWSGI 是一個 Web 服務(wù)器,它是一個用 C 語言編寫的 Web 應(yīng)用程序容器,支持運行 Python、Ruby、Perl 等多種編程語言。uWSGI 服務(wù)器可以作為一個獨立的應(yīng)用服務(wù)器,也可以與其他 Web 服務(wù)器(如 Nginx、Apache)一起使用,通過 WSGI 協(xié)議與 Python 應(yīng)用程序通信。
  • uwsgiuwsgi 是一個與 uWSGI 服務(wù)器相關(guān)的協(xié)議。uwsgi 協(xié)議是一種二進制協(xié)議,它定義了 uWSGI 服務(wù)器與應(yīng)用程序之間的通信協(xié)議。使用 uwsgi 協(xié)議,uWSGI 服務(wù)器可以與 Python 應(yīng)用程序通信,而不需要像 CGI 那樣啟動一個新的進程來處理每個請求。uwsgi 協(xié)議允許 uWSGI 服務(wù)器與應(yīng)用程序之間進行雙向通信,從而提高了性能。

因此,uWSGI 是一個 Web 服務(wù)器,可以通過 WSGI 協(xié)議與 Python 應(yīng)用程序通信,并使用 uwsgi 協(xié)議進行通信。WSGI 是 Python Web 應(yīng)用程序與 Web 服務(wù)器之間的接口規(guī)范,定義了應(yīng)用程序和服務(wù)器之間的標準接口。而 uwsgi 則是 uWSGI 服務(wù)器與應(yīng)用程序之間的二進制通信協(xié)議。

二、安裝 uwsgi 模塊

uWSGI 是一種 Web 服務(wù)器網(wǎng)關(guān)接口(Web Server Gateway Interface),它可以用于將 Python Web 應(yīng)用程序與 Web 服務(wù)器(如 Nginx 或 Apache)集成在一起。

  • 在使用uWSGI模塊時,需要安裝uwsgi模塊,并在Python Web應(yīng)用程序中導(dǎo)入uwsgi模塊,并使用uwsgi模塊提供的函數(shù)來配置和管理Web應(yīng)用程序的運行。常見的uwsgi模塊函數(shù)包括uwsgi.optin()、uwsgi.route()、uwsgi.applications()等。
  • 另外,uWSGI模塊還提供了一些高級特性,如Master/Worker模式、進程管理、負載均衡、自動擴展等,使得Web應(yīng)用程序可以更好地適應(yīng)高并發(fā)和大流量的情況。

1)配置pip源

國內(nèi)源地址:

  • pypi 清華大學(xué)源:https://pypi.tuna.tsinghua.edu.cn/simple
  • pypi 騰訊源:http://mirrors.cloud.tencent.com/pypi/simple
  • pypi 阿里源:https://mirrors.aliyun.com/pypi/simple/
mkdir  ~/.pip/
cat >~/.pip/pip.conf<<EOF
[global]
index-url = https://repo.huaweicloud.com/repository/pypi/simple
trusted-host = repo.huaweicloud.com
timeout = 120
EOF

2)安裝 uwsgi 模塊

# 安裝python3
yum -y install python3

yum -y install gcc-c++ -y
yum -y install python3-devel -y

# 安裝 uwsgi flask 模塊
pip3 install uwsgi flask

# 查看版本
uwsgi --version

三、示例演示(uWSGI + Nginx 配置)

1)安裝 nginx

yum update -y
yum install epel-release
yum -y install nginx

2)創(chuàng)建 app.py 文件

創(chuàng)建一個名為 app.py 的文件,添加以下代碼:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello():
return 'Hello, World!'

if __name__ == '__main__':
app.run()

3)創(chuàng)建 uWSGI 配置文件

創(chuàng)建一個 uWSGI 配置文件,例如 uwsgi.ini,其中包含以下信息:

[uwsgi]
module = app:app
# 相當(dāng)于命令下面兩行
#wsgi-file = app.py # 項目入口文件
#callable = app # flask應(yīng)用對象
# 支持http+socket兩種方式,這里選用socket,也可以選擇http-socket,下面會講解這三種區(qū)別
# http = 127.0.0.1:8000
socket = 0.0.0.0:8000
# 也可以使用socket文件,在nginx配置文件中配置也對應(yīng),僅限本機通信,一般也很少使用
# socket = /app/myapp.sock

# 注意記得提前創(chuàng)建目錄
chdir = /opt/myapp
pidfile=/opt/myapp/myapp.pid
processes = 4
threads = 2
master = true
vacuum = true
py-autoreload = 1
daemonize = /tmp/uwsgi.log

uwsgi.ini常用配置參數(shù)詳解:

  • chdir=/xxx/xxx # 指定項目目錄, 這里寫上程序根目錄(即app.py文件所在目錄)對應(yīng)上述目錄結(jié)構(gòu)為src
  • home=/xxx/xxx # 指定虛擬環(huán)境變量
  • wsgi-file=xxx # 指定加載WSGI文件
  • socket=xxx # 指定uwsgi的客戶端將要連接的socket的路徑(使用UNIX socket的情況)或者地址(使用網(wǎng)絡(luò)地址的情況)。#socket協(xié)議,用于和nginx通訊,端口可配置成別的端口;如果有nginx在uwsgi之前作為代理的話應(yīng)該配socket 如:socket=0.0.0.0:5000。當(dāng)然也可以使用http-socket #而如果客戶端請求不經(jīng)過(不搭建)Nginx代理服務(wù)器,服務(wù)請求直接到uwsgi服務(wù)器的話那么就配http。如:http=0.0.0.0:5000;IP和端口與項目啟動文件app.py中一致; 127.0.0.1雖然是表示本地IP,但想要在網(wǎng)絡(luò)上訪問必須設(shè)置host=0.0.0.0才不受IP限制。
  • callable=app # 這個 app 指的是 flask 項目啟動程序中定義的 flask name 的名字,我的啟動程序是 app.py , 里面定義的 flask 的名字是 app 。
  • module = mysite.wsgi # 加載一個WSGI模塊,這里加載mysite/wsgi.py這個模塊
  • `master=true # 指定啟動主進程
  • `processes=4 # 設(shè)置工作進程的數(shù)量
  • threads=2 # 設(shè)置每個工作進程的線程數(shù)
  • vacuum=true # 當(dāng)服務(wù)器退出時自動刪除unix socket文件和pid文件
  • logfile-chmod=644 # 指定日志文件的權(quán)限
  • daemonize=%(chdir)/xxx.log # 進程在后臺運行,并將日志打印到指定文件
  • pidfile=%(chdir)/xxx.pid # 在失去權(quán)限前,將主進程pid寫到指定的文件
  • uid=xxx # uWSGI服務(wù)器運行時的用戶id
  • gid=xxx # uWSGI服務(wù)器運行時的用戶組id
  • procname-prefix-spaced=xxx # 指定工作進程名稱的前綴
  • chdir=/xxx/xxx # 指定項目目錄, 這里寫上程序根目錄(即app.py文件所在目錄)對應(yīng)上述目錄結(jié)構(gòu)為/opt/uwsgi/
  • listen = 120 # 設(shè)置socket的監(jiān)聽隊列大小(默認:100)

4)啟動 uWSGI

在命令行中啟動 uWSGI:

uwsgi --ini uwsgi.ini
###或者
uwsgi uwsgi.ini

### 重啟
uwsgi --reload /opt/myapp/myapp.pid
###關(guān)閉
uwsgi --stop /opt/myapp/myapp.pid

【溫馨提示】其實也可以通過一條命令帶上對應(yīng)的參數(shù)即可啟動,但是不推薦,測試可以。一般使用配置文件的方式啟動服務(wù)。

使用http協(xié)議啟動uwsgi的命令為:

uwsgi --http :8000 --ini uwsgi_conf.ini -d ./uwsgi.log --pidfile=uwsgi.pid
  • --http 指定用5800端口啟動http協(xié)議
  • --ini 指定上述的啟動配置文件
  • -d 指定uwsgi的log,方便我們調(diào)試
  • --pidfile 將啟動的進程號寫到uwsgi.pid文件中,方便我們在需要停止服務(wù)器時kill掉。

5)配置 Web 服務(wù)器

將 Web 服務(wù)器配置為反向代理 uWSGI,例如,在 Nginx 中,可以使用以下配置文件:

# vi /etc/nginx/conf.d/myapp.conf
server {
listen 8080;
server_name myapp.com;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
}
}

其中,uwsgi_params 文件包含以下內(nèi)容:

uwsgi_param  QUERY_STRING       $query_string;
uwsgi_param REQUEST_METHOD $request_method;
uwsgi_param CONTENT_TYPE $content_type;
uwsgi_param CONTENT_LENGTH $content_length;

uwsgi_param REQUEST_URI $request_uri;
uwsgi_param PATH_INFO $document_uri;
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;
uwsgi_param REQUEST_SCHEME $scheme;
uwsgi_param HTTPS $https if_not_empty;

uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;

【特別注意】uwsgi_params 在nginx conf文件夾下自帶,uwsgi_pass一定要跟uwsgi_conf.ini中寫的地址完全一致。

6)重啟 Web 服務(wù)器

重啟 Web 服務(wù)器以使配置生效。

# 重啟
systemctl restart nginx

# 如果是之前nginx服務(wù)已經(jīng)存在,只是修改了配置,可建議使用reload加載
nginx -t && nginx -s reload
# 或者
systemctl reload nginx

訪問(瀏覽器訪問,curl訪問也行)

7)Nginx upstream 負載均衡

Nginx上游(upstream)是指一組后端服務(wù)器,Nginx可以與其通信并將客戶端請求轉(zhuǎn)發(fā)到這些服務(wù)器。換句話說,上游服務(wù)器是N?ginx代理請求的后端服務(wù)器。

Nginx的upstream支持5種 分配方式,其中 輪詢(默認)、權(quán)重、IP散列這三種為Nginx原生支持的分配方式,fair 和 url_hash 為第三方支持的分配方式。

1、輪詢(默認)

輪詢是upstream的默認分配方式,即每個請求按照時間順序輪流分配到不同的后端服務(wù)器,如果某個后端服務(wù)器 down 掉后,能自動剔除。

upstream backend {
server 192.168.182.110:8000;
server 192.168.182.111:8000;
}

2、權(quán)重(weight)

輪詢的加強版,既可以指定輪詢比率,weight 和訪問幾率成正比,主要應(yīng)用于后端服務(wù)器異質(zhì)的場景下。

upstream backend {
server 192.168.182.110:8000 weight=1;
server 192.168.182.111:8000 weight=2;
}

3、IP散列(ip_hash)

每個請求按照訪問 Ip(即Nginx的前置服務(wù)器或客戶端IP)的 hash結(jié)果分配,這樣每個訪客會固定訪問一個后端服務(wù)器,可以解決 session 一致問題。

upstream backend {
ip_hash;
server 192.168.182.110:8000 weight=1;
server 192.168.182.111:8000 weight=2;
}

先在另外一個節(jié)點上再起一個uWSGI服務(wù),將上面示例配置修改:

# vi /etc/nginx/conf.d/myapp.conf
upstream backend {
server 192.168.182.110:8000;
server 192.168.182.111:8000;
}

server {
listen 8080;
server_name myapp.com;
location / {
include uwsgi_params;
uwsgi_pass backend;
}
}

192.168.182.110 節(jié)點 app.py

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello():
return 'Hello, World 192.168.182.110!\n'

if __name__ == '__main__':
app.run()

192.168.182.111 節(jié)點 app.py

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello():
return 'Hello, World 192.168.182.111!\n'

if __name__ == '__main__':
app.run()

驗證

curl  127.0.0.1:8080

從上圖可知,請求輪詢調(diào)度,這才是企業(yè)一般想要的效果,負載均衡。

8)http、http-socket 和 socket 區(qū)別

  • httphttp-socket的區(qū)別在于,如果我們想直接將uwsgi用作服務(wù)器(例如Apache和nginx那樣)直接暴露在公網(wǎng)那么就使用http
  • 如果有單獨的服務(wù)器(例如Apache或者nginx),由服務(wù)器將請求轉(zhuǎn)發(fā)給uwsgi處理,并且使用http協(xié)議,那么此時使用http-socket
  • http: 自己會產(chǎn)生一個http進程(可以認為與nginx同一層)負責(zé)路由http請求給workerhttp進程和worker之間使用的是uwsgi協(xié)議。
  • http-socket: 不會產(chǎn)生http進程, 一般用于在前端webserver不支持uwsgi而僅支持http時使用, 他產(chǎn)生的worker使用的是http協(xié)議。
  • 因此, http 一般是作為獨立部署的選項; http-socket 在前端webserver不支持uwsgi時使用, 如果前端webserver支持uwsgi, 則直接使用socket即可(tcp or unix)。

【1】socket 示例(uwsgi.ini):

[uwsgi]
module = app:app
#socket = 127.0.0.1:8000
socket = 0.0.0.0:8000

chdir = /opt/myapp
pidfile=/opt/myapp/myapp.pid
processes = 4
threads = 2
master = true
vacuum = true
py-autoreload = 1
daemonize = /tmp/uwsgi.log

nginx配置

upstream backend {
server 192.168.182.110:8000;
server 192.168.182.111:8000;
}

server {
listen 8080;
server_name myapp.com;
location / {
include uwsgi_params;
uwsgi_pass backend;
}
}

【2】http 示例(uwsgi.ini):

[uwsgi]
module = app:app
socket = 0.0.0.0:8000

chdir = /opt/myapp
pidfile=/opt/myapp/myapp.pid
processes = 4
threads = 2
master = true
vacuum = true
py-autoreload = 1
daemonize = /tmp/uwsgi.log

nginx配置

upstream backend {
server 192.168.182.110:8000;
server 192.168.182.111:8000;
}

server {
listen 8080;
server_name myapp.com;
location / {
include uwsgi_params;
proxy_pass http://backend;
}
}

【3】http-socket 示例(uwsgi.ini):

[uwsgi]
module = app:app
http = 0.0.0.0:8000

chdir = /opt/myapp
pidfile=/opt/myapp/myapp.pid
processes = 4
threads = 2
master = true
vacuum = true
py-autoreload = 1
daemonize = /tmp/uwsgi.log

nginx配置

upstream backend {
server 192.168.182.110:8000;
server 192.168.182.111:8000;
}

server {
listen 8080;
server_name myapp.com;
location / {
include uwsgi_params;
proxy_pass http://backend;
}
}

9)TCP 與 uinx 區(qū)別

TCP和Unix套接字(Unix domain socket)是兩種不同類型的套接字。

  • TCP套接字是基于TCP/IP協(xié)議的網(wǎng)絡(luò)套接字,用于在網(wǎng)絡(luò)上進行進程間通信。TCP套接字需要指定IP地址和端口號,以便其他進程可以連接到該套接字進行通信。TCP套接字是一種跨網(wǎng)絡(luò)邊界的套接字,可以在不同的計算機之間進行通信。TCP套接字常用于客戶端/服務(wù)器架構(gòu)中,如Web服務(wù)器、數(shù)據(jù)庫服務(wù)器等。
  • Unix套接字是基于Unix域套接字(Unix domain socket)的本地套接字,用于在同一臺計算機上進行進程間通信。Unix套接字只需要指定一個文件路徑,而不需要使用IP地址和端口號。Unix套接字是一種進程間通信(IPC)機制,它提供了高效、可靠和安全的進程間通信方式。Unix套接字通常用于本地服務(wù)器和本地客戶端之間的通信,例如X Window系統(tǒng)中的客戶端和服務(wù)器。

因此,TCP套接字用于在網(wǎng)絡(luò)上進行通信,而Unix套接字用于在同一臺計算機上進行通信。雖然TCP套接字可以通過網(wǎng)絡(luò)連接到不同的計算機,但是Unix套接字提供了更高效的進程間通信機制,并且更適合于需要在同一臺計算機上運行的進程間通信。

【TCP 示例】常用uwsgi.ini

[uwsgi]
module = app:app
socket = 127.0.0.1:8000

chdir = /opt/myapp
pidfile=/opt/myapp/myapp.pid
processes = 4
threads = 2
master = true
vacuum = true
py-autoreload = 1
daemonize = /tmp/uwsgi.log

【unix 示例】僅限于本機通信,很少使用。uwsgi.ini

[uwsgi]
module = app:app
socket = /opt/myapp/myapp.socket

chdir = /opt/myapp
pidfile=/opt/myapp/myapp.pid
processes = 4
threads = 2
master = true
vacuum = true
py-autoreload = 1
daemonize = /tmp/uwsgi.log

nginx配置

server {
listen 8080;
server_name myapp.com;
location / {
include uwsgi_params;
proxy_pass unix:///opt/myapp/myapp.sock;
}
}

Python 中 web開發(fā)中的 WSGI、uWSGI 和 uwsgi 三者介紹就先到這里了

責(zé)任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2023-05-13 00:10:08

Python協(xié)議uWSGI

2024-05-13 09:38:14

PythonWeb開發(fā)WSGI

2010-10-13 09:21:39

2019-02-18 11:01:31

緩存Nginxuwsgi

2021-08-10 07:00:01

Redis單線程并發(fā)

2022-02-22 15:27:46

數(shù)據(jù)結(jié)構(gòu)容器算法

2014-11-24 09:35:06

CGIFastCGIWSGI

2023-05-23 07:06:05

PythonPowerShell

2010-06-01 18:03:05

Rsync 使用

2021-09-16 10:05:09

鴻蒙HarmonyOS應(yīng)用

2010-04-26 14:44:36

負載均衡設(shè)備

2023-06-20 15:45:15

服務(wù)卡片鴻蒙

2015-07-22 16:16:47

PythonScikit-Lear機器學(xué)習(xí)

2009-07-06 18:43:13

VB指針

2011-06-30 15:45:55

SEO

2011-07-13 11:12:43

C++MFC

2017-01-09 16:25:55

Android Shortcuts系統(tǒng)

2022-02-19 07:41:36

Bean注解項目

2011-03-29 09:56:35

Cacti界面

2010-06-01 17:44:14

Rsync 使用
點贊
收藏

51CTO技術(shù)棧公眾號

日本在线免费中文字幕| 欧美a∨亚洲欧美亚洲| 国产在线不卡一区二区三区| 亚洲欧美另类久久久精品| 91精品久久久久久蜜桃| 国产在线综合网| 国产免费久久| 欧美va亚洲va在线观看蝴蝶网| 一区二区传媒有限公司| 在线观看a视频| 高清不卡一区二区| 国产精品久久久久久久久久免费| 日韩成人毛片视频| 免费毛片在线不卡| 日韩欧美一级二级| 国产裸体免费无遮挡| 天堂av中文在线| 国产欧美日韩综合| 国产98在线|日韩| 在线免费看毛片| 亚洲免费高清| 久久在线观看视频| 自拍偷拍视频亚洲| 国产乱人伦丫前精品视频| 精品污污网站免费看| 欧美,日韩,国产在线| 黄色网在线看| 欧美极品美女视频| 欧美日韩最好看的视频| 国产91绿帽单男绿奴| 国内精品视频一区二区三区八戒| 欧洲午夜精品久久久| 久草国产在线视频| 在线成人超碰| 日韩在线观看网址| 性猛交娇小69hd| 女同另类激情重口| 亚洲国产精品人久久电影| 国产在线视频三区| 91麻豆精品一二三区在线| 欧美在线999| 91av在线免费播放| 另类激情视频| 日本道色综合久久| 十八禁视频网站在线观看| 97成人资源| 欧美性色19p| 丰满少妇被猛烈进入高清播放| 国产不卡123| 污片在线观看一区二区| 热久久最新网址| 综合久久2019| 亚洲天堂av老司机| 中文字幕精品在线播放| 四虎亚洲成人| 亚洲成人tv网| 国产91在线免费| 亚洲最大网站| 在线观看欧美日本| www.涩涩涩| 91麻豆精品国产综合久久久| 日韩写真欧美这视频| 无码国产精品久久一区免费| 亚洲高清在线一区| 亚洲国产精品小视频| 黄色国产在线观看| 精品久久久久久久| 久久九九有精品国产23| 欧美黄色免费看| 今天的高清视频免费播放成人| 久久久久久久久久久久久久久久久久av| 国产一级aa大片毛片| 亚洲免费观看| 国产精品美乳在线观看| 国产精品一区二区三区在线免费观看| 国内精品久久久久影院薰衣草| 亚洲伊人第一页| 天天干,夜夜爽| 欧美极品少妇xxxxⅹ高跟鞋| 日韩精品第1页| 美女高潮在线观看| 欧美三级在线视频| 国产一级二级av| 日韩精品免费一区二区夜夜嗨 | 婷婷五月综合激情| 久久蜜臀中文字幕| 国产高潮呻吟久久久| 爱看av在线入口| 91福利视频久久久久| 青青草久久伊人| 久久九九热re6这里有精品| 国产香蕉一区二区三区在线视频| 一起操在线播放| 一本久道久久综合婷婷鲸鱼| 国产精品99久久久久久人| 97人妻精品一区二区三区视频| 成人深夜视频在线观看| 亚洲蜜桃在线| 91福利区在线观看| 欧美日韩五月天| 一级国产黄色片| 国产精品国产三级国产在线观看| 97色在线观看免费视频| 伊人免费在线观看高清版| 成人中文字幕电影| 亚洲欧美日韩另类精品一区二区三区| 99热99re6国产在线播放| 欧美日韩第一区日日骚| 成人网站免费观看| 欧美成人国产| 国产精品一区二区三区久久久| 蜜桃久久一区二区三区| 国产精品久久99| 一本大道熟女人妻中文字幕在线 | 欧美精品乱码久久久久久按摩| 欧美大喷水吹潮合集在线观看| 99久久视频| 国产z一区二区三区| 蜜臀av中文字幕| 亚洲免费看黄网站| 亚洲欧美视频二区| 国产一区二区三区四区二区| 国自产精品手机在线观看视频| 国产又色又爽又黄又免费| 久久精品网站免费观看| 天天夜碰日日摸日日澡性色av| 精品国产一区二区三区2021| 这里只有精品久久| 丰满人妻一区二区三区四区| 久久综合中文字幕| 国产黄色片免费在线观看| 狂野欧美xxxx韩国少妇| 久久精品99国产精品酒店日本| av首页在线观看| 久久免费看少妇高潮| 欧美啪啪免费视频| 国产精品自在| 91国偷自产一区二区三区的观看方式| 国产叼嘿视频在线观看| 亚洲黄一区二区三区| 亚洲色图欧美自拍| 久久综合国产| 国产日韩在线一区| 日本在线视频网| 7777精品伊人久久久大香线蕉 | 亚洲曰韩产成在线| 日韩av影视大全| 久久久久亚洲| 91九色对白| 欧美24videosex性欧美| 精品国产一二三| 日韩精品视频免费看| 91社区在线播放| 好男人www社区| 久久综合电影| 97国产超碰| 国产乱码在线| 精品中文视频在线| 伊人中文字幕在线观看| 国产视频911| 在线看免费毛片| 你懂的亚洲视频| 国产精品一区二区在线观看| 瑟瑟视频在线看| 亚洲人在线视频| 一级特黄aaa| 一区二区三区中文字幕精品精品 | 国产精品露脸av在线| 国产二区在线播放| 51久久夜色精品国产麻豆| 91日韩中文字幕| www.爱久久.com| 手机在线免费观看毛片| 真实国产乱子伦精品一区二区三区| 91九色偷拍| 亚洲人成在线网站| 中文字幕少妇一区二区三区| 国产av精国产传媒| 精品国产福利视频| 精品视频第一页| 国产精品白丝jk黑袜喷水| 国产人妻777人伦精品hd| 九九视频精品全部免费播放| 91久久久久久久| 国产色播av在线| 日韩在线视频观看| 殴美一级特黄aaaaaa| 91电影在线观看| 免费一级肉体全黄毛片| 久久蜜桃香蕉精品一区二区三区| www.99r| 日韩一级精品| 2025韩国大尺度电影| 免费观看成人www动漫视频| 国产精品日韩电影| 白浆在线视频| 久久精品成人欧美大片| 国产又爽又黄网站亚洲视频123| 欧美私人免费视频| 欧美一二三区视频| 亚洲日本青草视频在线怡红院| 醉酒壮男gay强迫野外xx| 国产综合成人久久大片91| 无码人妻丰满熟妇区96| 午夜国产欧美理论在线播放| 欧美一区二区福利| 爱爱精品视频| 91精品免费视频| 日本欧美不卡| 午夜精品免费视频| aaa大片在线观看| 中文字幕免费国产精品| 亚洲AV第二区国产精品| 精品国产制服丝袜高跟| 亚洲一区二区影视| 色88888久久久久久影院按摩| 久久婷婷综合国产| 亚洲色图一区二区三区| www亚洲色图| 久久新电视剧免费观看| 日韩黄色一区二区| 国产剧情一区在线| 性生生活大片免费看视频| 视频一区国产视频| 国内外成人免费激情视频| 狠狠爱综合网| 奇米777四色影视在线看| 色综合久久一区二区三区| 欧美少妇一区| 伊人久久大香线蕉| 精品视频导航| 欧美成人午夜77777| 国产免费高清一区| 国产91精品入| 国产综合动作在线观看| 999在线精品| av一区观看| 亚洲一区二区免费在线观看| 亚洲综合精品一区二区| 高清不卡一区| 91在线播放国产| 精品一区二区三区中文字幕视频| 成人福利在线观看| 91视频成人| 99视频免费观看蜜桃视频| 日韩精品视频在线看| 亚洲www在线观看| 麻豆久久一区| 97人人模人人爽人人喊38tv| 高清日韩中文字幕| 国产亚洲第一区| 久久99国产精品视频| 日韩视频精品| 欧美激情777| 国产精品一二三在线观看| 国产精品草草| 久在线观看视频| 久久最新视频| 中文字幕22页| 国产+成+人+亚洲欧洲自线| www.四虎在线| 久久久亚洲综合| 亚洲一级片在线播放| 亚洲人成人一区二区在线观看| 九九九在线视频| 欧美三级免费观看| 在线观看国产一区二区三区| 欧美一区二区三区视频| 免费看黄色一级视频| 亚洲天堂免费视频| 黄网站免费在线播放| 欧美精品久久久久| 国产一区一一区高清不卡| 91免费国产网站| 啪啪国产精品| 亚洲午夜精品久久久中文影院av| 欧美黄色aaaa| 黄色av免费在线播放| 激情五月激情综合网| 国产精品久久无码| 国产精品视频线看| 九九热这里有精品视频| 一本在线高清不卡dvd| 92久久精品一区二区| 亚洲国产精品成人精品| a√在线中文网新版址在线| 欧美成人免费在线视频| 久久爱91午夜羞羞| 国产69精品久久久久9999apgf| 曰本一区二区三区视频| 黄色一级视频播放| 亚洲综合丁香| 久久久久无码精品| 国产色91在线| 久久精品无码人妻| 欧美人体做爰大胆视频| 人妻少妇一区二区三区| 最近2019免费中文字幕视频三 | 国产鲁鲁视频在线观看免费| 欧美第一淫aaasss性| 99欧美精品| 久久资源亚洲| 欧美体内she精视频在线观看| 激情综合网俺也去| 91尤物视频在线观看| 破处女黄色一级片| 欧美日韩中文国产| 三级在线视频| 久久久亚洲国产| 精品一区二区三区在线观看视频| 日韩区国产区| 久久狠狠一本精品综合网| 性一交一黄一片| 1024成人网| 欧美一级黄视频| 精品一区精品二区| 国产自产自拍视频在线观看| 亚洲自拍偷拍一区| 国产精品国产一区| 九九热在线免费| 久久久国际精品| 手机看片久久久| 亚洲精品97久久| 美足av综合网| 亚洲一区免费网站| 一个色综合网| 国内av一区二区| 国产精品国产三级国产aⅴ中文 | 日韩国产欧美在线播放| 99久久国产精| 欧美日韩色婷婷| 特黄aaaaaaaaa真人毛片| 欧美激情中文网| 51vv免费精品视频一区二区| 在线无限看免费粉色视频| 麻豆视频一区二区| 天堂网中文在线观看| 欧美无乱码久久久免费午夜一区 | 精品少妇一区二区30p| av在线播放一区二区| 欧美 另类 交| 国产伦精一区二区三区| 中文字幕人妻一区二| 欧美一区二区视频免费观看| gogo在线观看| 99久久伊人精品影院| 最新亚洲激情| 成人区人妻精品一区二| 黄色成人av在线| 深夜福利在线看| 国产精品av在线| 精品日韩一区| 亚洲理论中文字幕| 一区二区日韩电影| 日韩一卡二卡在线| 欧美整片在线观看| 精品亚洲成人| 日韩精品视频一二三| 亚洲欧美日韩国产综合在线| 不卡av中文字幕| 97碰在线观看| 成人毛片免费看| av在线免费观看不卡| 亚洲最大成人网4388xx| 午夜激情在线视频| 国产精品成人播放| 亚洲一级淫片| 久久福利小视频| 欧洲一区二区三区在线| 免费av不卡| 国产亚洲二区| 日本亚洲免费观看| h色网站在线观看| 亚洲国产成人爱av在线播放| 国产精品粉嫩| 国产美女视频免费| 99国产精品视频免费观看| 免费一级a毛片| 欧美国产日韩在线| 久草精品在线| 黑人巨大猛交丰满少妇| 欧美丝袜美女中出在线| 国产激情视频在线观看| 精品视频一区在线| 久久99精品久久久久久国产越南 | 久久黄色小视频| 国产午夜精品理论片a级探花| 91丨精品丨国产| avav在线看| 亚洲美女屁股眼交| 可以在线观看的av| 丁香五月网久久综合| 麻豆一区二区99久久久久| 国产精品成人国产乱| 精品久久国产精品| 啄木系列成人av电影| 可以看的av网址| 欧美日韩一区二区三区在线| 春色校园综合激情亚洲| 青少年xxxxx性开放hg|