3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《Introduction to Tornado》中文翻译计划——第五章:异步Web服务

發布時間:2025/4/16 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《Introduction to Tornado》中文翻译计划——第五章:异步Web服务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://www.pythoner.com/294.html

本文為《Introduction to Tornado》中文翻譯,將在https://github.com/alioth310/itt2zh上面持續更新,本文內容可能不是最新狀態,請在GitHub上獲得最新版本。

本文也可在http://demo.pythoner.com/itt2zh上進行格式化的預覽。

第五章:異步Web服務

到目前為止,我們已經看到了許多使Tornado成為一個Web應用強有力框架的功能。它的簡單性、易用性和便捷性使其有足夠的理由成為許多Web項目的不錯的選擇。然而,Tornado受到最多關注的功能是其異步取得和提供內容的能力,它有著很好的理由:它使得處理非阻塞請求更容易,最終導致更高效的處理以及更好的可擴展性。在本章中,我們將看到Tornado異步請求的基礎,以及一些推送技術,這種技術可以使你使用更少的資源來提供更多的請求以編寫更簡單的Web應用。

5.1 異步Web請求

大部分Web應用(包括我們之前的例子)都是阻塞性質的,也就是說當一個請求被處理時,這個進程就會被掛起直至請求完成。在大多數情況下,Tornado處理的Web請求完成得足夠快使得這個問題并不需要被關注。然而,對于那些需要一些時間來完成的操作(像大數據庫的請求或外部API),這意味著應用程序被有效的鎖定直至處理結束,很明顯這在可擴展性上出現了問題。

不過,Tornado給了我們更好的方法來處理這種情況。應用程序在等待第一個處理完成的過程中,讓I/O循環打開以便服務于其他客戶端,直到處理完成時啟動一個請求并給予反饋,而不再是等待請求完成的過程中掛起進程。

為了實現Tornado的異步功能,我們構建一個向Twotter搜索API發送HTTP請求的簡單Web應用。這個Web應用有一個參數q作為查詢字符串,并確定多久會出現一條符合搜索條件的推文被發布在Twitter上(”每秒推數”)。確定這個數值的方法非常粗糙,但足以達到例子的目的。圖5-1展示了這個應用的界面。


圖5-1 異步HTTP示例:推率

我們將展示這個應用的三個不同版本:首先,是一個使用同步HTTP請求的版本,然后是一個使用帶有回調函數的Tornado異步HTTP客戶端版本。最后,我們將展示如何使用Tornado 2.1版本新增的gen模塊來使異步HTTP請求更加清晰和易實現。為了理解這些例子,你不需要成為關于Twitter搜索API的專家,但一定的熟悉不會有害。你可以在https://dev.twitter.com/docs/api/1/get/search閱讀關于搜索API的開發者文檔。

5.1.1 從同步開始

代碼清單5-1包含我們的推率計算器的同步版本的代碼。記住我們在頂部導入了Tornado的httpclient模塊:我們將使用這個模塊的HTTPClient類來執行HTTP請求。之后,我們將使用這個模塊的AsyncHTTPClient。

?

代碼清單5-1 同步HTTP請求:tweet_rate.py Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 import tornado.httpserver import tornado.ioloop import tornado.options import tornado.web import tornado.httpclient import urllib import json import datetime import time from tornado.options import define, options define("port", default=8000, help="run on the given port", type=int) class IndexHandler(tornado.web.RequestHandler): ????def get(self): ????????query = self.get_argument('q') ????????client = tornado.httpclient.HTTPClient() ????????response = client.fetch("http://search.twitter.com/search.json?" + \ ????????????????urllib.urlencode({"q": query, "result_type": "recent", "rpp": 100})) ????????body = json.loads(response.body) ????????result_count = len(body['results']) ????????now = datetime.datetime.utcnow() ????????raw_oldest_tweet_at = body['results'][-1]['created_at'] ????????oldest_tweet_at = datetime.datetime.strptime(raw_oldest_tweet_at, ????????????????"%a, %d %b %Y %H:%M:%S +0000") ????????seconds_diff = time.mktime(now.timetuple()) - \ ????????????????time.mktime(oldest_tweet_at.timetuple()) ????????tweets_per_second = float(result_count) / seconds_diff ????????self.write(""" <div style="text-align: center"> ????<div style="font-size: 72px">%s</div> ????<div style="font-size: 144px">%.02f</div> ????<div style="font-size: 24px">tweets per second</div> </div>""" % (query, tweets_per_second)) if __name__ == "__main__": ????tornado.options.parse_command_line() ????app = tornado.web.Application(handlers=[(r"/", IndexHandler)]) ????http_server = tornado.httpserver.HTTPServer(app) ????http_server.listen(options.port) ????tornado.ioloop.IOLoop.instance().start()

?

這個程序的結構現在對你而言應該已經很熟悉了:我們有一個RequestHandler類和一個處理到應用根路徑請求的IndexHandler。在IndexHandler的get方法中,我們從查詢字符串中抓取參數q,然后用它執行一個到Twitter搜索API的請求。下面是最相關的一部分代碼:

?

Python
1 2 3 4 client = tornado.httpclient.HTTPClient() response = client.fetch("http://search.twitter.com/search.json?" + \ ????????urllib.urlencode({"q": query, "result_type": "recent", "rpp": 100})) body = json.loads(response.body)

?

這里我們實例化了一個Tornado的HTTPClient類,然后調用結果對象的fetch方法。fetch方法的同步版本使用要獲取的URL作為參數。這里,我們構建一個URL來抓取Twitter搜索API的相關搜索結果(rpp參數指定我們想獲得搜索結果首頁的100個推文,而result_type參數指定我們只想獲得匹配搜索的最近推文)。fetch方法會返回一個HTTPResponse對象,其 body屬性包含我們從遠端URL獲取的任何數據。Twitter將返回一個JSON格式的結果,所以我們可以使用Python的json模塊來從結果中創建一個Python數據結構。

fetch方法返回的HTTPResponse對象允許你訪問HTTP響應的任何部分,不只是body。可以在官方文檔[1]相關信息。

處理函數的其余部分關注的是計算每秒推文數。我們使用搜索結果中最舊推文與最新推文時間戳之差來確定搜索覆蓋的時間,然后使用這個數值除以搜索取得的推文數來獲得我們的最終結果。最后,我們編寫了一個擁有這個結果的簡單HTML頁面給瀏覽器。

5.1.2 阻塞的困擾

到目前為止,我們已經編寫了 一個請求Twitter API并向瀏覽器返回結果的簡單Tornado應用。盡管應用程序本身響應相當快,但是向Twitter發送請求到獲得返回的搜索數據之間有相當大的滯后。在同步(到目前為止,我們假定為單線程)應用,這意味著同時只能提供一個請求。所以,如果你的應用涉及一個2秒的API請求,你將每間隔一秒才能提供(最多!)一個請求。這并不是你所稱的高可擴展性應用,即便擴展到多線程和/或多服務器 。

為了更具體的看出這個問題,我們對剛編寫的例子進行基準測試。你可以使用任何基準測試工具來驗證這個應用的性能,不過在這個例子中我們使用優秀的Siege utility工具進行測試。它可以這樣使用:

?

Python
1 $ siege http://localhost:8000/?q=pants -c10 -t10s

?

在這個例子中,Siege對我們的應用在10秒內執行大約10個并發請求,輸出結果如圖5-2所示。我們可以很容易看出,這里的問題是無論每個請求自身返回多么快,API往返都會以至于產生足夠大的滯后,因為進程直到請求完成并且數據被處理前都一直處于強制掛起狀態。當一兩個請求時這還不是一個問題,但達到100個(甚至10個)用戶時,這意味著整體變慢。


圖5-2 同步推率獲取

此時,不到10秒時間10個相似用戶的平均響應時間達到了1.99秒,共計29次。請記住,這個例子只提供了一個非常簡單的網頁。如果你要添加其他Web服務或數據庫的調用的話,結果會更糟糕。這種代碼如果被 用到網站上,即便是中等強度的流量都會導致請求增長緩慢,甚至發生超時或失敗。

5.1.3 基礎異步調用

幸運的是,Tornado包含一個AsyncHTTPClient類,可以執行異步HTTP請求。它和代碼清單5-1的同步客戶端實現有一定的相似性,除了一些我們將要討論的重要區別。代碼清單5-2是其源代碼。

?

代碼清單5-2 異步HTTP請求:tweet_rate_async.py Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 import tornado.httpserver import tornado.ioloop import tornado.options import tornado.web import tornado.httpclient import urllib import json import datetime import time from tornado.options import define, options define("port", default=8000, help="run on the given port", type=int) class IndexHandler(tornado.web.RequestHandler): ????@tornado.web.asynchronous ????def get(self): ????????query = self.get_argument('q') ????????client = tornado.httpclient.AsyncHTTPClient() ????????client.fetch("http://search.twitter.com/search.json?" + \ ????????????????urllib.urlencode({"q": query, "result_type": "recent", "rpp": 100}), ????????????????callback=self.on_response) ????def on_response(self, response): ????????body = json.loads(response.body) ????????result_count = len(body['results']) ????????now = datetime.datetime.utcnow() ????????raw_oldest_tweet_at = body['results'][-1]['created_at'] ????????oldest_tweet_at = datetime.datetime.strptime(raw_oldest_tweet_at, ????????????????"%a, %d %b %Y %H:%M:%S +0000") ????????seconds_diff = time.mktime(now.timetuple()) - \ ????????????????time.mktime(oldest_tweet_at.timetuple()) ????????tweets_per_second = float(result_count) / seconds_diff ????????self.write(""" <div style="text-align: center"> ????<div style="font-size: 72px">%s</div> ????<div style="font-size: 144px">%.02f</div> ????<div style="font-size: 24px">tweets per second</div> </div>""" % (self.get_argument('q'), tweets_per_second)) ????????self.finish() if __name__ == "__main__": ????tornado.options.parse_command_line() ????app = tornado.web.Application(handlers=[(r"/", IndexHandler)]) ????http_server = tornado.httpserver.HTTPServer(app) ????http_server.listen(options.port) ????tornado.ioloop.IOLoop.instance().start()

?

AsyncHTTPClient的fetch方法并不返回調用的結果。取而代之的是它指定了一個callback參數;你指定的方法或函數將在HTTP請求完成時被調用,并使用HTTPResponse作為其參數。

?

Python
1 2 3 4 client = tornado.httpclient.AsyncHTTPClient() client.fetch("http://search.twitter.com/search.json?" + ? urllib.urlencode({"q": query, "result_type": "recent", "rpp": 100}), ????????callback=self.on_response)

?

在這個例子中,我們指定on_response方法作為回調函數。我們之前使用期望的輸出轉化Twitter搜索API請求到網頁中的所有邏輯被搬到了on_response函數中。還需要注意的是@tornado.web.asynchronous裝飾器的使用(在get方法的定義之前)以及在回調方法結尾處調用的self.finish()。我們稍后將簡要的討論他們的細節。

這個版本的應用擁有和之前同步版本相同的外觀,但其性能更加優越。有多好呢?讓我們看看基準測試的結果吧。

正如你在圖5-3中所看到的,我們從同步版本的每秒3.20個事務提升到了12.59,在相同的時間內總共提供了118次請求。這真是一個非常大的改善!正如你所想象的,當擴展到更多用戶和更長時間時,它將能夠提供更多連接,并且不會遇到同步版本遭受的變慢的問題。


圖5-3 異步推率獲取

5.1.4 異步裝飾器和finish方法

Tornado默認在函數處理返回時關閉客戶端的連接。在通常情況下,這正是你想要的。但是當我們處理一個需要回調函數的異步請求時,我們需要連接保持開啟狀態直到回調函數執行完畢。你可以在你想改變其行為的方法上面使用@tornado.web.asynchronous裝飾器來告訴Tornado保持連接開啟,正如我們在異步版本的推率例子中IndexHandler的get方法中所做的。下面是相關的代碼片段:

?

Python
1 2 3 4 5 class IndexHandler(tornado.web.RequestHandler): ????@tornado.web.asynchronous ????def get(self): ????????query = self.get_argument('q') ????????[... other request handler code here...]

?

記住當你使用@tornado.web.asynchonous裝飾器時,Tornado永遠不會自己關閉連接。你必須在你的RequestHandler對象中調用finish方法來顯式地告訴Tornado關閉連接。(否則,請求將可能掛起,瀏覽器可能不會顯示我們已經發送給客戶端的數據。)在前面的異步示例中,我們在on_response函數的write后面調用了finish方法:

?

Python
1 2 3 4 5 6 7 8 ????[... other callback code ...] ????????self.write(""" <div style="text-align: center"> ????<div style="font-size: 72px">%s</div> ????<div style="font-size: 144px">%.02f</div> ????<div style="font-size: 24px">tweets per second</div> </div>""" % (self.get_argument('q'), tweets_per_second)) ????????self.finish()

?

5.1.5 異步生成器

現在,我們的推率程序的異步版本運轉的不錯并且性能也很好。不幸的是,它有點麻煩:為了處理請求 ,我們不得不把我們的代碼分割成兩個不同的方法。當我們有兩個或更多的異步請求要執行的時候,編碼和維護都顯得非常困難,每個都依賴于前面的調用:不久你就會發現自己調用了一個回調函數的回調函數的回調函數。下面就是一個構想出來的(但不是不可能的)例子:

?

Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 def get(self): ????client = AsyncHTTPClient() ????client.fetch("http://example.com", callback=on_response) def on_response(self, response): ????client = AsyncHTTPClient() ????client.fetch("http://another.example.com/", callback=on_response2) def on_response2(self, response): ????client = AsyncHTTPClient() ????client.fetch("http://still.another.example.com/", callback=on_response3) def on_response3(self, response): ????[etc., etc.]

?

幸運的是,Tornado 2.1版本引入了tornado.gen模塊,可以提供一個更整潔的方式來執行異步請求。代碼清單5-3就是使用了tornado.gen版本的推率應用源代碼。讓我們先來看一下,然后討論它是如何工作的。

?

代碼清單5-3 使用生成器模式的異步請求:tweet_rate_gen.py Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 import tornado.httpserver import tornado.ioloop import tornado.options import tornado.web import tornado.httpclient import tornado.gen import urllib import json import datetime import time from tornado.options import define, options define("port", default=8000, help="run on the given port", type=int) class IndexHandler(tornado.web.RequestHandler): ????@tornado.web.asynchronous ????@tornado.gen.engine ????def get(self): ????????query = self.get_argument('q') ????????client = tornado.httpclient.AsyncHTTPClient() ????????response = yield tornado.gen.Task(client.fetch, ????????????????"http://search.twitter.com/search.json?" + \ ????????????????urllib.urlencode({"q": query, "result_type": "recent", "rpp": 100})) ????????body = json.loads(response.body) ????????result_count = len(body['results']) ????????now = datetime.datetime.utcnow() ????????raw_oldest_tweet_at = body['results'][-1]['created_at'] ????????oldest_tweet_at = datetime.datetime.strptime(raw_oldest_tweet_at, ????????????????"%a, %d %b %Y %H:%M:%S +0000") ????????seconds_diff = time.mktime(now.timetuple()) - \ ????????????????time.mktime(oldest_tweet_at.timetuple()) ????????tweets_per_second = float(result_count) / seconds_diff ????????self.write(""" <div style="text-align: center"> ????<div style="font-size: 72px">%s</div> ????<div style="font-size: 144px">%.02f</div> ????<div style="font-size: 24px">tweets per second</div> </div>""" % (query, tweets_per_second)) ????????self.finish() if __name__ == "__main__": ????tornado.options.parse_command_line() ????app = tornado.web.Application(handlers=[(r"/", IndexHandler)]) ????http_server = tornado.httpserver.HTTPServer(app) ????http_server.listen(options.port) ????tornado.ioloop.IOLoop.instance().start()

?

正如你所看到的,這個代碼和前面兩個版本的代碼非常相似。主要的不同點是我們如何調用Asynchronous對象的fetch方法。下面是相關的代碼部分:

?

Python
1 2 3 4 5 client = tornado.httpclient.AsyncHTTPClient() response = yield tornado.gen.Task(client.fetch, ????????"http://search.twitter.com/search.json?" + \ ????????urllib.urlencode({"q": query, "result_type": "recent", "rpp": 100})) body = json.loads(response.body)

?

我們使用Python的yield關鍵字以及tornado.gen.Task對象的一個實例,將我們想要的調用和傳給該調用函數的參數傳遞給那個函數。這里,yield的使用返回程序對Tornado的控制,允許在HTTP請求進行中執行其他任務。當HTTP請求完成時,RequestHandler方法在其停止的地方恢復。這種構建的美在于它在請求處理程序中返回HTTP響應,而不是回調函數中。因此,代碼更易理解:所有請求相關的邏輯位于同一個位置。而HTTP請求依然是異步執行的,所以我們使用tornado.gen可以達到和使用回調函數的異步請求版本相同的性能,正如我們在圖5-4中所看到的那樣。


圖5-4 使用tornado.gen的異步推率獲取

記住@tornado.gen.engine裝飾器的使用需要剛好在get方法的定義之前;這將提醒Tornado這個方法將使用tornado.gen.Task類。tornado.gen模塊還喲一些其他類和函數可以方便Tornado的異步編程。查閱一下文檔[1]是非常值得的。

使一切異步

在本章中我們使用了Tornado的異步HTTP客戶端作為如何執行異步任務的實現。其他開發者也編寫了針對其他任務的異步客戶端庫。志愿者們在Tornado wiki上維護了一個關于這些庫的相當完整的列表。

一個重要的例子是bit.ly的asyncmongo,它可以異步的調用MongoDB服務器。這個庫是我們的一個非常不錯的選擇,因為它是專門給Tornado開發者開發提供異步數據庫訪問的,不過對于使用其他數據庫的用戶而言,在這里也可以找到不錯的異步數據存儲庫的選擇。

5.1.6 異步操作總結

正如我們在前面的例子中所看到的,Tornado異步Web發服務不僅容易實現也在實踐中有著不容小覷的能力。使用異步處理可以讓我們的應用在長時間的API和數據庫請求中免受阻塞之苦,最終更快地提供更多請求。盡管不是所有的處理都能從異步中受益–并且實際上嘗試整個程序非阻塞會迅速使事情變得復雜–但Tornado的非阻塞功能可以非常方便的創建依賴于緩慢查詢或外部服務的Web應用。

不過,值得注意的是,這些例子都非常的做作。如果你正在設計一個任何規模下帶有該功能的應用,你可能希望客戶端瀏覽器來執行Twitter搜索請求(使用JavaScript),而讓Web服務器轉向提供其他請求。在大多數情況下,你至少希望將結果緩存以便兩次相同搜索項的請求不會導致再次向遠程API執行完整請求。通常,如果你在后端執行HTTP請求提供網站內容,你可能希望重新思考如何建立你的應用。

考慮到這一點,在下一組示例中,我們將看看如何在前端使用像JavaScript這樣的工具處理異步應用,讓客戶端承擔更多工作,以提高你應用的擴展性。

5.2 使用Tornado進行長輪詢

Tornado異步架構的另一個優勢是它能夠輕松處理HTTP長輪詢。這是一個處理實時更新的方法,它既可以應用到簡單的數字標記通知,也可以實現復雜的多用戶聊天室。

部署提供實時更新的Web應用對于Web程序員而言是一項長期的挑戰。更新用戶狀態、發送新消息提醒、或者任何一個需要在初始文檔完成加載后由服務器向瀏覽器發送消息方法的全局活動。一個早期的方法是瀏覽器以一個固定的時間間隔向服務器輪詢新請求。這項技術帶來了新的挑戰:輪詢頻率必須足夠快以便通知是最新的,但又不能太頻繁,當成百上千的客戶端持續不斷的打開新的連接會使HTTP請求面臨嚴重的擴展性挑戰。頻繁的輪詢使得Web服務器遭受”凌遲”之苦。

所謂的”服務器推送”技術允許Web應用實時發布更新,同時保持合理的資源使用以及確保可預知的擴展。對于一個可行的服務器推送技術而言,它必須在現有的瀏覽器上表現良好。最流行的技術是讓瀏覽器發起連接來模擬服務器推送更新。這種方式的HTTP連接被稱為長輪詢或Comet請求。

長輪詢意味著瀏覽器只需啟動一個HTTP請求,其連接的服務器會有意保持開啟。瀏覽器只需要等待更新可用時服務器”推送”響應。當服務器發送響應并關閉連接后,(或者瀏覽器端客戶請求超時),客戶端只需打開一個新的連接并等待下一個更新。

本節將包括一個簡單的HTTP長輪詢實時應用以及證明Tornado架構如何使這些應用更簡單。

5.2.1 長輪詢的好處

HTTP長輪詢的主要吸引力在于其極大地減少了Web服務器的負載。相對于客戶端制造大量的短而頻繁的請求(以及每次處理HTTP頭部產生的開銷),服務器端只有當其接收一個初始請求和再次發送響應時處理連接。大部分時間沒有新的數據,連接也不會消耗任何處理器資源。

瀏覽器兼容性是另一個巨大的好處。任何支持AJAX請求的瀏覽器都可以執行推送請求。不需要任何瀏覽器插件或其他附加組件。對比其他服務器端推送技術,HTTP長輪詢最終成為了被廣泛使用的少數幾個可行方案之一。

我們已經接觸過長輪詢的一些使用。實際上,前面提到的狀態更新、消息通知以及聊天消息都是目前流行的網站功能。像Google Docs這樣的站點使用長輪詢同步協作,兩個人可以同時編輯文檔并看到對方的改變。Twitter使用長輪詢指示瀏覽器在新狀態更新可用時展示通知。Facebook使用這項技術在其聊天功能中。長輪詢如此流行的一個原因是它改善了應用的用戶體驗:訪客不再需要不斷地刷新頁面來獲取最新的內容。

5.2.2 示例:實時庫存報告

這個例子演示了一個根據多個購物者瀏覽器更新的零售商庫存實時計數服務。這個應用提供一個帶有”Add to Cart”按鈕的HTML書籍細節頁面,以及書籍剩余庫存的計數。一個購物者將書籍添加到購物車之后,其他訪問這個站點的訪客可以立刻看到庫存的減少。

為了提供庫存更新,我們需要編寫一個在初始化處理方法調用后不會立即關閉HTTP連接的RequestHandler子類。我們使用Tornado內建的asynchronous裝飾器完成這項工作,如代碼清單5-4所示。

?

代碼清單5-4 長輪詢:shopping_cart.py Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 import tornado.web import tornado.httpserver import tornado.ioloop import tornado.options from uuid import uuid4 class ShoppingCart(object): ????totalInventory = 10 ????callbacks = [] ????carts = {} ????def register(self, callback): ????????self.callbacks.append(callback) ????def moveItemToCart(self, session): ????????if session in self.carts: ????????????return ????????self.carts[session] = True ????????self.notifyCallbacks() ????def removeItemFromCart(self, session): ????????if session not in self.carts: ????????????return ????????del(self.carts[session]) ????????self.notifyCallbacks() ????def notifyCallbacks(self): ????????for c in self.callbacks: ????????????self.callbackHelper(c) ????????self.callbacks = [] ????def callbackHelper(self, callback): ????????callback(self.getInventoryCount()) ????def getInventoryCount(self): ????????return self.totalInventory - len(self.carts) class DetailHandler(tornado.web.RequestHandler): ????def get(self): ????????session = uuid4() ????????count = self.application.shoppingCart.getInventoryCount() ????????self.render("index.html", session=session, count=count) class CartHandler(tornado.web.RequestHandler): ????def post(self): ????????action = self.get_argument('action') ????????session = self.get_argument('session') ????????if not session: ????????????self.set_status(400) ????????????return ????????if action == 'add': ????????????self.application.shoppingCart.moveItemToCart(session) ????????elif action == 'remove': ????????????self.application.shoppingCart.removeItemFromCart(session) ????????else: ????????????self.set_status(400) class StatusHandler(tornado.web.RequestHandler): ????@tornado.web.asynchronous ????def get(self): ????????self.application.shoppingCart.register(self.async_callback(self.on_message)) ????def on_message(self, count): ????????self.write('{"inventoryCount":"%d"}' % count) ????????self.finish() class Application(tornado.web.Application): ????def __init__(self): ????????self.shoppingCart = ShoppingCart() ????????handlers = [ ????????????(r'/', DetailHandler), ????????????(r'/cart', CartHandler), ????????????(r'/cart/status', StatusHandler) ????????] ????????settings = { ????????????'template_path': 'templates', ????????????'static_path': 'static' ????????} ????????tornado.web.Application.__init__(self, handlers, **settings) if __name__ == '__main__': ????tornado.options.parse_command_line() ????app = Application() ????server = tornado.httpserver.HTTPServer(app) ????server.listen(8000) ????tornado.ioloop.IOLoop.instance().start()

?

讓我們在看模板和腳本文件之前先詳細看下shopping_cart.py。我們定義了一個ShoppingCart類來維護我們的庫存中商品的數量,以及把商品加入購物車的購物者列表。然后,我們定義了DetailHandler用于渲染HTML;CartHandler用于提供操作購物車的接口;StatusHandler用于查詢全局庫存變化的通知。

DetailHandler為每個頁面請求產生一個唯一標識符,在每次請求時提供庫存數量,并向瀏覽器渲染index.html模板。CartHandler為瀏覽器提供了一個API來請求從訪客的購物車中添加或刪除物品。瀏覽器中運行的JavaScript提交POST請求來操作訪客的購物車。我們將在下面的StatusHandler和ShoppingCart類的講解中看到這些方法是如何作用域庫存數量查詢的。

?

Python
1 2 3 4 class StatusHandler(tornado.web.RequestHandler): ????@tornado.web.asynchronous ????def get(self): ????????self.application.shoppingCart.register(self.async_callback(self.on_message))

?

關于StatusHandler首先需要注意的是get方法上面的@tornado.web.asynchronous裝飾器。這使得Tornado在get方法返回時不會關閉連接。在這個方法中,我們只是注冊了一個帶有購物車控制器的回調函數。我們使用self.async_callback包住回調函數以確保回調函數中引發的異常不會使RequestHandler關閉連接。

在Tornado 1.1之前的版本中,回調函數必須被包在self.async_callback()方法中來捕獲被包住的函數可能會產生的異常。不過,在Tornado 1.1或更新版本中,這不再是顯式必須的了。

?

Python
1 2 3 def on_message(self, count): ????self.write('{"inventoryCount":"%d"}' % count) ????self.finish()

?

每當訪客操作購物車,ShoppingCart控制器為每個已注冊的回調函數調用on_message方法。這個方法將當前庫存數量寫入客戶端并關閉連接。(如果服務器不關閉連接的話,瀏覽器可能不會知道請求已經被完成,也不會通知腳本有過更新。)既然長輪詢連接已經關閉,購物車控制器必須刪除已注冊的回調函數列表中的回調函數。在這個例子中,我們只需要將回調函數列表替換為一個新的空列表。在請求處理中被調用并完成后刪除已注冊的回調函數十分重要,因為隨后在調用回調函數時將在之前已關閉的連接上調用finish(),這會產生一個錯誤。

最后,ShoppingCart控制器管理庫存分批和狀態回調。StatusHandler通過register方法注冊回調函數,即添加這個方法到內部的callbacks數組。

?

Python
1 2 3 4 5 6 7 8 9 10 11 12 13 def moveItemToCart(self, session): ????if session in self.carts: ????????return ????self.carts[session] = True ????self.notifyCallbacks() def removeItemFromCart(self, session): ????if session not in self.carts: ????????return ????del(self.carts[session]) ????self.notifyCallbacks()

?

此外,ShoppingCart控制器還實現了CartHandler中的addItemToCart和removeItemFromCart。當CartHandler調用這些方法,請求頁面的唯一標識符(傳給這些方法的session變量)被用于在調用notifyCallbacks之前標記庫存。[2]

?

Python
1 2 3 4 5 6 7 8 def notifyCallbacks(self): ????for c in self.callbacks: ????????self.callbackHelper(c) ????self.callbacks = [] def callbackHelper(self, callback): ????callback(self.getInventoryCount())

?

已注冊的回調函數被以當前可用庫存數量調用,并且回調函數列表被清空以確保回調函數不會在一個已經關閉的連接上調用。

代碼清單5-5是展示書籍列表變化的模板。

?

代碼清單5-5 長輪詢:index.html Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 <html> ????<head> ????????<title>Burt's Books – Book Detail</title> ????????<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" ????????????type="text/javascript"></script> ????????<script src="{{ static_url('scripts/inventory.js') }}" ????????????type="application/javascript"></script> ????</head> ????<body> ????????<div> ????????????<h1>Burt's Books</h1> ????????????<hr/> ????????????<p><h2>The Definitive Guide to the Internet</h2> ????????????<em>Anonymous</em></p> ????????</div> ????????<img src="static/images/internet.jpg" alt="The Definitive Guide to the Internet" /> ????????<hr /> ????????<input type="hidden" id="session" value="{{ session }}" /> ????????<div id="add-to-cart"> ????????????<p><span style="color: red;">Only <span id="count">{{ count }}</span> ????????????????left in stock! Order now!</span></p> ????????????<p>$20.00 <input type="submit" value="Add to Cart" id="add-button" /></p> ????????</div> ????????<div id="remove-from-cart" style="display: none;"> ????????????<p><span style="color: green;">One copy is in your cart.</span></p> ????????????<p><input type="submit" value="Remove from Cart" id="remove-button" /></p> ????????</div> ????</body> </html>

?

當DetailHandler渲染index.html模板時,我們只是渲染了圖書的詳細信息并包含了必需的的JavaScript代碼。此外,我們通過session變量動態地包含了一個唯一ID,并以count變量保存當前庫存值。

最后,我們將討論客戶端的JavaScript代碼。由于這是一本關于Tornado的書籍,因此我們直到現在一直使用的是Python,而這個例子中的客戶端代碼是至關重要的,我們至少要能夠理解它的要點。在代碼清單5-6中,我們使用了jQuery庫來協助定義瀏覽器的頁面行為。

?

代碼清單5-6 長輪詢:inventory.js Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 $(document).ready(function() { ????document.session = $('#session').val(); ????setTimeout(requestInventory, 100); ????$('#add-button').click(function(event) { ????????jQuery.ajax({ ????????????url: '//localhost:8000/cart', ????????????type: 'POST', ????????????data: { ????????????????session: document.session, ????????????????action: 'add' ????????????}, ????????????dataType: 'json', ????????????beforeSend: function(xhr, settings) { ????????????????$(event.target).attr('disabled', 'disabled'); ????????????}, ????????????success: function(data, status, xhr) { ????????????????$('#add-to-cart').hide(); ????????????????$('#remove-from-cart').show(); ????????????????$(event.target).removeAttr('disabled'); ????????????} ????????}); ????}); ????$('#remove-button').click(function(event) { ????????jQuery.ajax({ ????????????url: '//localhost:8000/cart', ????????????type: 'POST', ????????????data: { ????????????????session: document.session, ????????????????action: 'remove' ????????????}, ????????????dataType: 'json', ????????????beforeSend: function(xhr, settings) { ????????????????$(event.target).attr('disabled', 'disabled'); ????????????}, ????????????success: function(data, status, xhr) { ????????????????$('#remove-from-cart').hide(); ????????????????$('#add-to-cart').show(); ????????????????$(event.target).removeAttr('disabled'); ????????????} ????????}); ????}); }); function requestInventory() { ????jQuery.getJSON('//localhost:8000/cart/status', {session: document.session}, ????????function(data, status, xhr) { ????????????$('#count').html(data['inventoryCount']); ????????????setTimeout(requestInventory, 0); ????????} ????); }

?

當文檔完成加載時,我們為”Add to Cart”按鈕添加了點擊事件處理函數,并隱藏了”Remove form Cart”按鈕。這些事件處理函數關聯服務器的API調用,并交換添加到購物車接口和從購物車移除接口。

?

Python
1 2 3 4 5 6 7 8 function requestInventory() { ????jQuery.getJSON('//localhost:8000/cart/status', {session: document.session}, ????????function(data, status, xhr) { ????????????$('#count').html(data['inventoryCount']); ????????????setTimeout(requestInventory, 0); ????????} ????); }

?

requestInventory函數在頁面完成加載后經過一個短暫的延遲再進行調用。在函數主體中,我們通過到/cart/status的HTTP GET請求初始化一個長輪詢。延遲允許在瀏覽器完成渲染頁面時使加載進度指示器完成,并防止Esc鍵或停止按鈕中斷長輪詢請求。當請求成功返回時,count的內容更新為當前的庫存量。圖5-5所示為展示全部庫存的兩個瀏覽器窗口。


圖5-5 長輪詢示例:全部庫存

現在,當你運行服務器,你將可以加載根URL并看到書籍的當前庫存數量。打開多個細節頁的瀏覽器窗口,并在其中一個窗口點擊”Add to Cart”按鈕。其余窗口的剩余庫存數量會立刻更新,如果5-6所示。


圖5-6 長輪詢示例:一個物品在購物車中

這是一個非常簡單的購物車實現,可以肯定的是–沒有邏輯確保我們不會跌破總庫存量,更不用說數據無法在Tornado應用的不同調用間或同一服務器并行的應用實例間保留。我們將這些改善作為練習留給讀者。

5.2.3 長輪詢的缺陷

正如我們所看到的,HTTP長輪詢在站點或特定用戶狀態的高度交互反饋通信中非常有用。但我們也應該知道它的一些缺陷。

當使用長輪詢開發應用時,記住對于瀏覽器請求超時間隔無法控制是非常重要的。由瀏覽器決定在任何中斷情況下重新開啟HTTP連接。另一個潛在的問題是許多瀏覽器限制了對于打開的特定主機的并發請求數量。當有一個連接保持空閑時,剩下的用來下載網站內容的請求數量就會有限制。

此外,你還應該明白請求是怎樣影響服務器性能的。再次考慮購物車應用。由于在庫存變化時所有的推送請求同時應答和關閉,使得在瀏覽器重新建立連接時服務器受到了新請求的猛烈沖擊。對于像用戶間聊天或消息通知這樣的應用而言,只有少數用戶的連接會同時關閉,這就不再是一個問題了。

5.3 Tornado與WebSockets

WebSockets是HTML5規范中新提出的客戶-服務器通訊協議。這個協議目前仍是草案,只有最新的一些瀏覽器可以支持它。但是,它的好處是顯而易見的,隨著支持它的瀏覽器越來越多,我們將看到它越來越流行。(和以往的Web開發一樣,必須謹慎地堅持依賴可用的新功能并能在必要時回滾到舊技術的務實策略。)

WebSocket協議提供了在客戶端和服務器間持久連接的雙向通信。協議本身使用新的ws://URL格式,但它是在標準HTTP上實現的。通過使用HTTP和HTTPS端口,它避免了從Web代理后的網絡連接站點時引入的各種問題。HTML5規范不只描述了協議本身,還描述了使用WebSockets編寫客戶端代碼所需要的瀏覽器API。

由于WebSocket已經在一些最新的瀏覽器中被支持,并且Tornado為之提供了一些有用的模塊,因此來看看如何使用WebSockets實現應用是非常值得的。

5.3.1 Tornado的WebSocket模塊

Tornado在websocket模塊中提供了一個WebSocketHandler類。這個類提供了和已連接的客戶端通信的WebSocket事件和方法的鉤子。當一個新的WebSocket連接打開時,open方法被調用,而on_message和on_close方法分別在連接接收到新的消息和客戶端關閉時被調用。

此外,WebSocketHandler類還提供了write_message方法用于向客戶端發送消息,close方法用于關閉連接。

?

Python
1 2 3 4 5 6 class EchoHandler(tornado.websocket.WebSocketHandler): ????def open(self): ????????self.write_message('connected!') ????def on_message(self, message): ????????self.write_message(message)

?

正如你在我們的EchoHandler實現中所看到的,open方法只是使用WebSocketHandler基類提供的write_message方法向客戶端發送字符串”connected!”。每次處理程序從客戶端接收到一個新的消息時調用on_message方法,我們的實現中將客戶端提供的消息原樣返回給客戶端。這就是全部!讓我們通過一個完整的例子看看實現這個協議是如何簡單的吧。

5.3.2 示例:使用WebSockets的實時庫存

在本節中,我們可以看到把之前使用HTTP長輪詢的例子更新為使用WebSockets是如何簡單。但是,請記住,WebSockets還是一個新標準,只有最新的瀏覽器版本可以支持它。Tornado支持的特定版本的WebSocket協議版本只在Firefox 6.0或以上、Safari 5.0.1或以上、Chrome 6或以上、IE 10預覽版或以上版本的瀏覽器中可用。

不去管免責聲明,讓我們先看看源碼吧。除了服務器應用需要在ShoppingCart和StatusHandler類中做一些修改外,大部分代碼保持和之前一樣。代碼清單5-7看起來會很熟悉。

?

代碼清單5-7 WebSockets:shopping_cart.py Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 import tornado.web import tornado.websocket import tornado.httpserver import tornado.ioloop import tornado.options from uuid import uuid4 class ShoppingCart(object): ????totalInventory = 10 ????callbacks = [] ????carts = {} ????def register(self, callback): ????????self.callbacks.append(callback) ????def unregister(self, callback): ????????self.callbacks.remove(callback) ???????? ????def moveItemToCart(self, session): ????????if session in self.carts: ????????????return ????????self.carts[session] = True ????????self.notifyCallbacks() ????def removeItemFromCart(self, session): ????????if session not in self.carts: ????????????return ????????del(self.carts[session]) ????????self.notifyCallbacks() ????def notifyCallbacks(self): ????????for callback in self.callbacks: ????????????callback(self.getInventoryCount()) ????def getInventoryCount(self): ????????return self.totalInventory - len(self.carts) class DetailHandler(tornado.web.RequestHandler): ????def get(self): ????????session = uuid4() ????????count = self.application.shoppingCart.getInventoryCount() ????????self.render("index.html", session=session, count=count) class CartHandler(tornado.web.RequestHandler): ????def post(self): ????????action = self.get_argument('action') ????????session = self.get_argument('session') ????????if not session: ????????????self.set_status(400) ????????????return ????????if action == 'add': ????????????self.application.shoppingCart.moveItemToCart(session) ????????elif action == 'remove': ????????????self.application.shoppingCart.removeItemFromCart(session) ????????else: ????????????self.set_status(400) class StatusHandler(tornado.websocket.WebSocketHandler): ????def open(self): ????????self.application.shoppingCart.register(self.callback) ????def on_close(self): ????????self.application.shoppingCart.unregister(self.callback) ????def on_message(self, message): ????????pass ???????? ????def callback(self, count): ????????self.write_message('{"inventoryCount":"%d"}' % count) class Application(tornado.web.Application): ????def __init__(self): ????????self.shoppingCart = ShoppingCart() ????????handlers = [ ????????????(r'/', DetailHandler), ????????????(r'/cart', CartHandler), ????????????(r'/cart/status', StatusHandler) ????????] ????????settings = { ????????????'template_path': 'templates', ????????????'static_path': 'static' ????????} ????????tornado.web.Application.__init__(self, handlers, **settings) if __name__ == '__main__': ????tornado.options.parse_command_line() ????app = Application() ????server = tornado.httpserver.HTTPServer(app) ????server.listen(8000) ????tornado.ioloop.IOLoop.instance().start()

?

除了額外的導入語句外,我們只需要改變ShoppingCart和StatusHandler類。首先需要注意的是,為了獲得WebSocketHandler的功能,需要使用tornado.websocket模塊。

在ShoppingCart類中,我們只需要在通知回調函數的方式上做一個輕微的改變。因為WebSOckets在一個消息發送后保持打開狀態,我們不需要在它們被通知后移除內部的回調函數列表。我們只需要迭代列表并調用帶有當前庫存量的回調函數:

?

Python
1 2 3 def notifyCallbacks(self): ????for callback in self.callbacks: ????????callback(self.getInventoryCount())

?

另一個改變是添加了unregisted方法。StatusHandler會在WebSocket連接關閉時調用該方法移除一個回調函數。

?

Python
1 2 def unregister(self, callback): ????self.callbacks.remove(callback)

?

大部分改變是在繼承自tornado.websocket.WebSocketHandler的StatusHandler類中的。WebSocket處理函數實現了open和on_message方法,分別在連接打開和接收到消息時被調用,而不是為每個HTTP方法實現處理函數。此外,on_close方法在連接被遠程主機關閉時被調用。

?

Python
1 2 3 4 5 6 7 8 9 10 11 12 class StatusHandler(tornado.websocket.WebSocketHandler): ????def open(self): ????????self.application.shoppingCart.register(self.callback) ????def on_close(self): ????????self.application.shoppingCart.unregister(self.callback) ????def on_message(self, message): ????????pass ????def callback(self, count): ????????self.write_message('{"inventoryCount":"%d"}' % count)

?

在實現中,我們在一個新連接打開時使用ShoppingCart類注冊了callback方法,并在連接關閉時注銷了這個回調函數。因為我們依然使用了CartHandler類的HTTP API調用,因此不需要監聽WebSocket連接中的新消息,所以on_message實現是空的。(我們覆寫了on_message的默認實現以防止在我們接收消息時Tornado拋出NotImplementedError異常。)最后,callback方法在庫存改變時向WebSocket連接寫消息內容。

這個版本的JavaScript代碼和之前的非常相似。我們只需要改變其中的requestInventory函數。我們使用HTML5 WebSocket API取代長輪詢資源的AJAX請求。參見代碼清單5-8.

?

代碼清單5-8 WebSockets:inventory.js中新的requestInventory函數 Python
1 2 3 4 5 6 7 8 9 10 11 function requestInventory() { ????var host = 'ws://localhost:8000/cart/status'; ????var websocket = new WebSocket(host); ????websocket.onopen = function (evt) { }; ????websocket.onmessage = function(evt) { ????????$('#count').html($.parseJSON(evt.data)['inventoryCount']); ????}; ????websocket.onerror = function (evt) { }; }

?

在創建了一個到ws://localhost:8000/cart/status的心得WebSocket連接后,我們為每個希望響應的事件添加了處理函數。在這個例子中我們唯一關心的事件是onmessage,和之前版本的requestInventory函數一樣更新count的內容。(輕微的不同是我們必須手工解析服務器送來的JSON對象。)

就像前面的例子一樣,在購物者添加書籍到購物車時庫存量會實時更新。不同之處在于一個持久的WebSocket連接取代了每次長輪詢更新中重新打開的HTTP請求。

5.3.3 WebSockets的未來

WebSocket協議目前仍是草案,在它完成時可能還會修改。然而,因為這個規范已經被提交到IETF進行最終審查,相對而言不太可能會再面臨重大的改變。正如本節開頭所提到的那樣,WebSocket的主要缺陷是目前只支持最新的一些瀏覽器。

盡管有上述警告,WebSockets仍然是在瀏覽器和服務器之間實現雙向通信的一個有前途的新方法。當協議得到了廣泛的支持后,我們將開始看到更加著名的應用的實現。

—————————————————
[1] 書中網頁已不存在,替換為當前網址。
[2] 下面的這組代碼書中使用的不是前面的代碼,這里為了保持一致修改為和前面的代碼一樣。

========================================================
各章鏈接:
《Introduction to Tornado》中文翻譯計劃——第一章:引言
《Introduction to Tornado》中文翻譯計劃——第二章:表單和模板
《Introduction to Tornado》中文翻譯計劃——第三章:模板擴展
《Introduction to Tornado》中文翻譯計劃——第四章:數據庫
《Introduction to Tornado》中文翻譯計劃——第五章:異步Web服務
《Introduction to Tornado》中文翻譯計劃——第六章:編寫安全應用
《Introduction to Tornado》中文翻譯計劃——第七章:外部服務認證
《Introduction to Tornado》中文翻譯計劃——第八章:部署Tornado

本文內容遵從CC3.0版權協議,轉載請注明:轉自Pythoner

本文鏈接地址:《Introduction to Tornado》中文翻譯計劃——第五章:異步Web服務

轉載于:https://www.cnblogs.com/DjangoBlog/p/4275499.html

總結

以上是生活随笔為你收集整理的《Introduction to Tornado》中文翻译计划——第五章:异步Web服务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

欧美国产亚洲日韩在线二区 | 久久这里只有精品视频9 | 狠狠色欧美亚洲狠狠色www | 午夜性刺激在线视频免费 | 自拍偷自拍亚洲精品10p | 少妇邻居内射在线 | 装睡被陌生人摸出水好爽 | 中文字幕乱码人妻二区三区 | 成熟人妻av无码专区 | 99久久人妻精品免费一区 | 蜜桃臀无码内射一区二区三区 | 永久免费观看国产裸体美女 | 久久综合给合久久狠狠狠97色 | 久久久久成人精品免费播放动漫 | 无码人妻丰满熟妇区五十路百度 | 狂野欧美性猛xxxx乱大交 | 亚洲国产高清在线观看视频 | 亚洲色欲久久久综合网东京热 | 动漫av一区二区在线观看 | 国产精品福利视频导航 | 精品国产乱码久久久久乱码 | 丰满人妻精品国产99aⅴ | 黄网在线观看免费网站 | 最近的中文字幕在线看视频 | 欧美人妻一区二区三区 | 人妻体内射精一区二区三四 | 国语自产偷拍精品视频偷 | 日本高清一区免费中文视频 | 97资源共享在线视频 | 131美女爱做视频 | 国产精品久久久av久久久 | 国内揄拍国内精品人妻 | 无码国模国产在线观看 | 少妇愉情理伦片bd | 秋霞成人午夜鲁丝一区二区三区 | aa片在线观看视频在线播放 | 人妻夜夜爽天天爽三区 | 粉嫩少妇内射浓精videos | 亚洲人交乣女bbw | 人人妻人人澡人人爽欧美精品 | 色 综合 欧美 亚洲 国产 | 99久久久无码国产aaa精品 | 纯爱无遮挡h肉动漫在线播放 | 爆乳一区二区三区无码 | 中文亚洲成a人片在线观看 | 亚洲成在人网站无码天堂 | 老太婆性杂交欧美肥老太 | 51国偷自产一区二区三区 | 成人一在线视频日韩国产 | 精品久久久无码中文字幕 | 久青草影院在线观看国产 | 欧美老熟妇乱xxxxx | 欧美大屁股xxxxhd黑色 | 亚洲综合精品香蕉久久网 | 亚洲日韩av一区二区三区中文 | 亚洲精品国产第一综合99久久 | 伊人久久大香线蕉亚洲 | 巨爆乳无码视频在线观看 | 免费无码av一区二区 | 欧美日韩视频无码一区二区三 | 成人性做爰aaa片免费看不忠 | 午夜性刺激在线视频免费 | 国产精品亚洲一区二区三区喷水 | 中文字幕人成乱码熟女app | 亚洲爆乳大丰满无码专区 | 中文字幕乱码人妻二区三区 | 日本精品久久久久中文字幕 | 色一情一乱一伦 | 55夜色66夜色国产精品视频 | 国产精品对白交换视频 | 樱花草在线社区www | www国产亚洲精品久久久日本 | 国产精品亚洲а∨无码播放麻豆 | 欧美成人高清在线播放 | 综合人妻久久一区二区精品 | 成人无码精品1区2区3区免费看 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 欧美日韩一区二区三区自拍 | 自拍偷自拍亚洲精品10p | 久久午夜夜伦鲁鲁片无码免费 | 网友自拍区视频精品 | 亚洲一区二区三区在线观看网站 | 国产香蕉尹人综合在线观看 | 国产精品久久久久久无码 | 日本精品高清一区二区 | 一本久道高清无码视频 | 黑人玩弄人妻中文在线 | 久久人人爽人人人人片 | 丰满少妇熟乱xxxxx视频 | 风流少妇按摩来高潮 | 久久国产精品_国产精品 | 大肉大捧一进一出好爽视频 | 中文字幕乱码中文乱码51精品 | 久久国产精品精品国产色婷婷 | 久久久久免费看成人影片 | 国产欧美亚洲精品a | 国产精品久久久久9999小说 | 国产97色在线 | 免 | 日韩无套无码精品 | 欧美xxxx黑人又粗又长 | 欧美猛少妇色xxxxx | 少妇性l交大片欧洲热妇乱xxx | 亚洲精品一区三区三区在线观看 | 日日躁夜夜躁狠狠躁 | 性欧美疯狂xxxxbbbb | 2019nv天堂香蕉在线观看 | 久久天天躁夜夜躁狠狠 | 亚洲熟女一区二区三区 | 日韩精品无码一本二本三本色 | 爱做久久久久久 | 丁香啪啪综合成人亚洲 | 又黄又爽又色的视频 | 久久午夜无码鲁丝片午夜精品 | 精品少妇爆乳无码av无码专区 | 欧美日韩视频无码一区二区三 | 性欧美videos高清精品 | 久久午夜无码鲁丝片秋霞 | 国产深夜福利视频在线 | 色 综合 欧美 亚洲 国产 | 欧美一区二区三区视频在线观看 | 正在播放东北夫妻内射 | 欧美午夜特黄aaaaaa片 | 台湾无码一区二区 | 毛片内射-百度 | 中文久久乱码一区二区 | 俄罗斯老熟妇色xxxx | 久久久久久a亚洲欧洲av冫 | 狠狠噜狠狠狠狠丁香五月 | 少妇性l交大片欧洲热妇乱xxx | 亚洲狠狠婷婷综合久久 | 一本色道久久综合狠狠躁 | 国产亚洲精品久久久久久国模美 | 欧美第一黄网免费网站 | 天堂久久天堂av色综合 | 色婷婷av一区二区三区之红樱桃 | 国产三级久久久精品麻豆三级 | 亚洲中文字幕成人无码 | 亚洲精品美女久久久久久久 | 国产精品人人爽人人做我的可爱 | 在线播放无码字幕亚洲 | 色诱久久久久综合网ywww | 沈阳熟女露脸对白视频 | 激情内射日本一区二区三区 | 黑人巨大精品欧美黑寡妇 | 丰满少妇女裸体bbw | 少妇无码吹潮 | 国产猛烈高潮尖叫视频免费 | 国产成人无码a区在线观看视频app | 日日摸日日碰夜夜爽av | 日日麻批免费40分钟无码 | 国产精品-区区久久久狼 | 精品国产一区二区三区四区在线看 | 亚洲国产精品毛片av不卡在线 | √天堂资源地址中文在线 | 国产午夜福利100集发布 | 亚洲日韩av一区二区三区四区 | 少妇性l交大片欧洲热妇乱xxx | 午夜时刻免费入口 | 国产午夜无码精品免费看 | 国产成人一区二区三区在线观看 | 国内老熟妇对白xxxxhd | 国产97人人超碰caoprom | 亚洲人成网站在线播放942 | 天堂а√在线地址中文在线 | 久久国产精品萌白酱免费 | 熟妇人妻无乱码中文字幕 | 爽爽影院免费观看 | 嫩b人妻精品一区二区三区 | 牲交欧美兽交欧美 | 色综合久久久久综合一本到桃花网 | 免费国产成人高清在线观看网站 | 国产疯狂伦交大片 | av无码久久久久不卡免费网站 | 国产午夜福利100集发布 | 国产精品美女久久久网av | 强辱丰满人妻hd中文字幕 | 亚洲一区二区三区香蕉 | 丰满人妻精品国产99aⅴ | 99久久精品午夜一区二区 | 日韩精品一区二区av在线 | 国产精品.xx视频.xxtv | 波多野结衣 黑人 | 亚洲s色大片在线观看 | 亚洲色欲色欲天天天www | 男人的天堂2018无码 | 婷婷色婷婷开心五月四房播播 | 三上悠亚人妻中文字幕在线 | 国产两女互慰高潮视频在线观看 | 日韩av无码一区二区三区不卡 | 爱做久久久久久 | 色综合视频一区二区三区 | 高清不卡一区二区三区 | 久久亚洲中文字幕无码 | 自拍偷自拍亚洲精品被多人伦好爽 | 亚洲综合精品香蕉久久网 | 亚洲精品欧美二区三区中文字幕 | 亚洲精品久久久久中文第一幕 | 欧美成人午夜精品久久久 | 骚片av蜜桃精品一区 | 夜夜高潮次次欢爽av女 | 日日麻批免费40分钟无码 | av无码久久久久不卡免费网站 | 婷婷丁香五月天综合东京热 | 亚洲乱亚洲乱妇50p | 欧美精品国产综合久久 | 四虎影视成人永久免费观看视频 | 国产免费久久久久久无码 | 亚洲第一无码av无码专区 | 大肉大捧一进一出好爽视频 | 亚洲国产av精品一区二区蜜芽 | 色欲人妻aaaaaaa无码 | 亚洲午夜久久久影院 | 久久久国产一区二区三区 | 久久精品人妻少妇一区二区三区 | 国产精华av午夜在线观看 | 国产无遮挡又黄又爽免费视频 | 欧洲熟妇色 欧美 | 人妻有码中文字幕在线 | 无码一区二区三区在线观看 | 永久免费观看美女裸体的网站 | 中文无码精品a∨在线观看不卡 | 少妇高潮一区二区三区99 | 亚洲日本一区二区三区在线 | 亚洲区小说区激情区图片区 | 日日干夜夜干 | 久久天天躁狠狠躁夜夜免费观看 | 四虎国产精品免费久久 | 精品aⅴ一区二区三区 | 成在人线av无码免观看麻豆 | 性色欲网站人妻丰满中文久久不卡 | 精品久久久久久亚洲精品 | 国产两女互慰高潮视频在线观看 | 高清国产亚洲精品自在久久 | aⅴ在线视频男人的天堂 | 天天爽夜夜爽夜夜爽 | 综合网日日天干夜夜久久 | 成人欧美一区二区三区 | 国产xxx69麻豆国语对白 | 成人亚洲精品久久久久软件 | 亚洲精品久久久久中文第一幕 | 中文字幕人妻无码一区二区三区 | 呦交小u女精品视频 | 国产特级毛片aaaaaa高潮流水 | a在线亚洲男人的天堂 | 性做久久久久久久免费看 | 成年美女黄网站色大免费视频 | 老熟女重囗味hdxx69 | 2020久久超碰国产精品最新 | 人人妻人人澡人人爽精品欧美 | 国产人成高清在线视频99最全资源 | 中文无码伦av中文字幕 | 亚洲乱码国产乱码精品精 | 国内揄拍国内精品少妇国语 | 成人无码精品1区2区3区免费看 | 亚洲精品午夜国产va久久成人 | 国产极品美女高潮无套在线观看 | 精品久久久无码人妻字幂 | 漂亮人妻洗澡被公强 日日躁 | 无码av最新清无码专区吞精 | 成在人线av无码免观看麻豆 | 日本成熟视频免费视频 | 精品国产成人一区二区三区 | 国产一区二区三区日韩精品 | 激情亚洲一区国产精品 | 久久国语露脸国产精品电影 | 久久久久免费看成人影片 | 国产亚洲精品久久久久久大师 | 亚洲精品午夜国产va久久成人 | 国产亚洲tv在线观看 | a在线观看免费网站大全 | 久久久精品成人免费观看 | 国产精品美女久久久网av | 天天躁夜夜躁狠狠是什么心态 | 欧美性猛交内射兽交老熟妇 | 国产精品无码一区二区三区不卡 | 熟女俱乐部五十路六十路av | 中文字幕无码日韩专区 | 无码午夜成人1000部免费视频 | 丰满少妇女裸体bbw | 国产av人人夜夜澡人人爽麻豆 | 亚洲精品综合一区二区三区在线 | 300部国产真实乱 | 国产精品人妻一区二区三区四 | 亚洲天堂2017无码 | 波多野结衣av一区二区全免费观看 | 精品熟女少妇av免费观看 | 国产又爽又猛又粗的视频a片 | 精品 日韩 国产 欧美 视频 | 亚洲国产av美女网站 | 国产精品香蕉在线观看 | 中文无码成人免费视频在线观看 | 中文字幕 亚洲精品 第1页 | 亚洲国产精品久久人人爱 | 风流少妇按摩来高潮 | 亚洲国产精品无码久久久久高潮 | 欧美国产日产一区二区 | 久久 国产 尿 小便 嘘嘘 | 精品国产aⅴ无码一区二区 | 国产激情无码一区二区 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 色一情一乱一伦一区二区三欧美 | 欧美日韩在线亚洲综合国产人 | 久久精品中文字幕大胸 | 精品水蜜桃久久久久久久 | 久久久精品欧美一区二区免费 | 国产成人综合美国十次 | aⅴ亚洲 日韩 色 图网站 播放 | 国产美女精品一区二区三区 | 国产绳艺sm调教室论坛 | аⅴ资源天堂资源库在线 | 97无码免费人妻超级碰碰夜夜 | 亚洲国产精品美女久久久久 | 国产97人人超碰caoprom | 亚洲の无码国产の无码步美 | 少妇太爽了在线观看 | 欧美成人午夜精品久久久 | 久热国产vs视频在线观看 | 鲁一鲁av2019在线 | 亚洲精品无码国产 | 欧美大屁股xxxxhd黑色 | 久久久久久久人妻无码中文字幕爆 | 狠狠色欧美亚洲狠狠色www | 亚洲国产成人a精品不卡在线 | 精品欧洲av无码一区二区三区 | 女人色极品影院 | 亚洲欧洲中文日韩av乱码 | 中文字幕乱码中文乱码51精品 | 久久久精品欧美一区二区免费 | 国产亚洲精品久久久闺蜜 | 国产精品久久久久9999小说 | 免费乱码人妻系列无码专区 | 亚洲国产av美女网站 | 一本无码人妻在中文字幕免费 | 国产婷婷色一区二区三区在线 | av人摸人人人澡人人超碰下载 | 欧洲熟妇精品视频 | 2020久久香蕉国产线看观看 | 小sao货水好多真紧h无码视频 | 亚洲成熟女人毛毛耸耸多 | 日本在线高清不卡免费播放 | 图片区 小说区 区 亚洲五月 | 青青草原综合久久大伊人精品 | 亚洲の无码国产の无码步美 | 澳门永久av免费网站 | 97夜夜澡人人双人人人喊 | 亚洲国精产品一二二线 | 乌克兰少妇性做爰 | 人人爽人人爽人人片av亚洲 | 国产精品久久久久久无码 | 澳门永久av免费网站 | 精品亚洲韩国一区二区三区 | 国产亚洲人成a在线v网站 | 国产亚洲tv在线观看 | 东京热一精品无码av | 日本饥渴人妻欲求不满 | 日韩精品a片一区二区三区妖精 | 波多野结衣一区二区三区av免费 | 国产精品久久久久影院嫩草 | 国产另类ts人妖一区二区 | 国产成人精品久久亚洲高清不卡 | 国产成人精品久久亚洲高清不卡 | 丝袜人妻一区二区三区 | 国产热a欧美热a在线视频 | 国产免费观看黄av片 | 国产成人无码av一区二区 | 久久国产精品精品国产色婷婷 | 亚洲无人区午夜福利码高清完整版 | 夜夜躁日日躁狠狠久久av | 久久综合久久自在自线精品自 | 少妇性俱乐部纵欲狂欢电影 | 欧美一区二区三区视频在线观看 | 久久久久国色av免费观看性色 | 18禁黄网站男男禁片免费观看 | 久久国语露脸国产精品电影 | 亚洲人成影院在线观看 | 亚洲色欲久久久综合网东京热 | 少妇高潮喷潮久久久影院 | 夜精品a片一区二区三区无码白浆 | 亚洲精品久久久久久久久久久 | 国产高清av在线播放 | 无码精品人妻一区二区三区av | 亚洲成av人片在线观看无码不卡 | 欧美国产日韩亚洲中文 | 5858s亚洲色大成网站www | 国内少妇偷人精品视频免费 | 久久精品视频在线看15 | 日韩精品成人一区二区三区 | 欧美 日韩 人妻 高清 中文 | 欧美精品一区二区精品久久 | 亚洲欧洲中文日韩av乱码 | 在线a亚洲视频播放在线观看 | 学生妹亚洲一区二区 | 又色又爽又黄的美女裸体网站 | 亚洲熟妇色xxxxx欧美老妇y | 成人免费视频视频在线观看 免费 | 免费观看黄网站 | 国产精品二区一区二区aⅴ污介绍 | 欧美三级a做爰在线观看 | 精品成在人线av无码免费看 | 色窝窝无码一区二区三区色欲 | 激情五月综合色婷婷一区二区 | 最新国产麻豆aⅴ精品无码 | 亚洲日韩av一区二区三区四区 | 日本乱偷人妻中文字幕 | 国产激情艳情在线看视频 | 成人动漫在线观看 | 中国女人内谢69xxxxxa片 | 国产福利视频一区二区 | 无码人妻精品一区二区三区下载 | 国产精品多人p群无码 | 日韩av无码一区二区三区 | 又大又紧又粉嫩18p少妇 | 久久综合给久久狠狠97色 | 国产精品无码永久免费888 | 久久综合给久久狠狠97色 | 国产午夜精品一区二区三区嫩草 | 香港三级日本三级妇三级 | 动漫av一区二区在线观看 | 老子影院午夜精品无码 | 成人免费视频视频在线观看 免费 | 在线欧美精品一区二区三区 | 国产av一区二区精品久久凹凸 | 粉嫩少妇内射浓精videos | 日产精品高潮呻吟av久久 | 亚洲男女内射在线播放 | 扒开双腿疯狂进出爽爽爽视频 | 白嫩日本少妇做爰 | 午夜嘿嘿嘿影院 | 欧美国产日韩亚洲中文 | 内射老妇bbwx0c0ck | 我要看www免费看插插视频 | 日日摸日日碰夜夜爽av | 国产成人精品久久亚洲高清不卡 | 漂亮人妻洗澡被公强 日日躁 | ass日本丰满熟妇pics | 久久久中文字幕日本无吗 | 国产精品香蕉在线观看 | 亚洲精品综合一区二区三区在线 | 88国产精品欧美一区二区三区 | 国产区女主播在线观看 | 人妻无码久久精品人妻 | 国产人妖乱国产精品人妖 | 亚洲 欧美 激情 小说 另类 | 国产精品-区区久久久狼 | 国产精品沙发午睡系列 | 国产绳艺sm调教室论坛 | 国产麻豆精品一区二区三区v视界 | 最近的中文字幕在线看视频 | 精品欧洲av无码一区二区三区 | 无码av最新清无码专区吞精 | 亚洲国产精品一区二区美利坚 | 国产成人无码午夜视频在线观看 | 日本饥渴人妻欲求不满 | 国产人妻大战黑人第1集 | 亚洲国产精品一区二区第一页 | 精品一区二区不卡无码av | 成人无码精品1区2区3区免费看 | 欧美 亚洲 国产 另类 | 东京一本一道一二三区 | 国产成人无码一二三区视频 | 国产成人精品优优av | av人摸人人人澡人人超碰下载 | 国产疯狂伦交大片 | 又大又紧又粉嫩18p少妇 | 野外少妇愉情中文字幕 | 内射白嫩少妇超碰 | 在线播放无码字幕亚洲 | 国产激情无码一区二区app | 日本高清一区免费中文视频 | 国内精品人妻无码久久久影院 | 日本熟妇乱子伦xxxx | 1000部啪啪未满十八勿入下载 | a片在线免费观看 | 又粗又大又硬又长又爽 | 精品久久久久久人妻无码中文字幕 | 色欲久久久天天天综合网精品 | 午夜理论片yy44880影院 | 又粗又大又硬又长又爽 | 粗大的内捧猛烈进出视频 | 性生交片免费无码看人 | 欧美激情内射喷水高潮 | 精品亚洲成av人在线观看 | 黑人大群体交免费视频 | 熟妇人妻激情偷爽文 | 美女极度色诱视频国产 | 精品国产一区二区三区四区在线看 | 婷婷六月久久综合丁香 | 欧美freesex黑人又粗又大 | 一本久道高清无码视频 | 女高中生第一次破苞av | 狠狠色丁香久久婷婷综合五月 | 亚洲精品鲁一鲁一区二区三区 | av香港经典三级级 在线 | 午夜精品一区二区三区的区别 | √8天堂资源地址中文在线 | 免费观看又污又黄的网站 | 一本色道久久综合狠狠躁 | 狠狠色色综合网站 | 国产莉萝无码av在线播放 | 午夜理论片yy44880影院 | 亚洲综合久久一区二区 | 欧美激情综合亚洲一二区 | 日韩人妻系列无码专区 | 欧美三级a做爰在线观看 | 一二三四在线观看免费视频 | 樱花草在线社区www | 国内精品久久久久久中文字幕 | 成人试看120秒体验区 | 成在人线av无码免费 | 久久久久久久人妻无码中文字幕爆 | 内射欧美老妇wbb | 国产又爽又黄又刺激的视频 | 欧美人与牲动交xxxx | 亚洲国产精品毛片av不卡在线 | 亚洲日韩乱码中文无码蜜桃臀网站 | 无码av中文字幕免费放 | 好男人社区资源 | 精品水蜜桃久久久久久久 | 国产色精品久久人妻 | 无码人妻精品一区二区三区不卡 | 大肉大捧一进一出好爽视频 | 老熟女乱子伦 | 国产精品久久国产三级国 | 国产亚洲tv在线观看 | 狠狠色丁香久久婷婷综合五月 | 久在线观看福利视频 | 丰满少妇人妻久久久久久 | 久久熟妇人妻午夜寂寞影院 | 精品国产青草久久久久福利 | 精品厕所偷拍各类美女tp嘘嘘 | 波多野结衣aⅴ在线 | 性生交大片免费看l | 少妇人妻av毛片在线看 | 牛和人交xxxx欧美 | 在线天堂新版最新版在线8 | 最新国产麻豆aⅴ精品无码 | 亚洲s码欧洲m码国产av | 亚洲成a人一区二区三区 | 国产激情无码一区二区 | 精品国产精品久久一区免费式 | 精品国偷自产在线视频 | 婷婷五月综合缴情在线视频 | 国产精品igao视频网 | 免费无码一区二区三区蜜桃大 | 精品日本一区二区三区在线观看 | 人妻aⅴ无码一区二区三区 | 草草网站影院白丝内射 | 亚洲成在人网站无码天堂 | 亚洲乱码国产乱码精品精 | 国产人妻精品一区二区三区 | 国产在线aaa片一区二区99 | 精品无码成人片一区二区98 | 久久无码人妻影院 | 亚洲一区二区观看播放 | 波多野结衣aⅴ在线 | 国产精品久久久久久无码 | 亚洲中文字幕在线无码一区二区 | 国产性生大片免费观看性 | 国产精品人人妻人人爽 | 国产精品久久福利网站 | 丰满岳乱妇在线观看中字无码 | 亚洲色大成网站www国产 | 亚洲日韩av一区二区三区四区 | 天天做天天爱天天爽综合网 | 久久99精品国产.久久久久 | 内射白嫩少妇超碰 | 中文精品久久久久人妻不卡 | 美女黄网站人色视频免费国产 | 麻豆国产人妻欲求不满 | 免费看男女做好爽好硬视频 | 无遮挡国产高潮视频免费观看 | 男女下面进入的视频免费午夜 | 在线精品亚洲一区二区 | 全球成人中文在线 | 色综合久久久无码中文字幕 | 无遮无挡爽爽免费视频 | 亚洲国产精品无码一区二区三区 | 99精品视频在线观看免费 | 中文字幕中文有码在线 | 亚洲国产成人a精品不卡在线 | 性色欲网站人妻丰满中文久久不卡 | 午夜不卡av免费 一本久久a久久精品vr综合 | 久久人人爽人人爽人人片ⅴ | 成人精品一区二区三区中文字幕 | 国产福利视频一区二区 | 精品久久综合1区2区3区激情 | 麻花豆传媒剧国产免费mv在线 | www成人国产高清内射 | 51国偷自产一区二区三区 | 国产精品久久国产三级国 | 成熟妇人a片免费看网站 | 成人女人看片免费视频放人 | 日韩精品无码一区二区中文字幕 | 97精品人妻一区二区三区香蕉 | 18禁黄网站男男禁片免费观看 | 大色综合色综合网站 | 精品亚洲成av人在线观看 | 国产亚洲美女精品久久久2020 | 精品欧美一区二区三区久久久 | 成人女人看片免费视频放人 | 国产美女精品一区二区三区 | 精品久久久久久亚洲精品 | 在线天堂新版最新版在线8 | 无码国模国产在线观看 | 国产成人精品久久亚洲高清不卡 | 大肉大捧一进一出视频出来呀 | 国产成人久久精品流白浆 | 日本一卡2卡3卡四卡精品网站 | 未满小14洗澡无码视频网站 | 国内丰满熟女出轨videos | 亚洲成av人综合在线观看 | 久久精品人妻少妇一区二区三区 | 亚洲乱亚洲乱妇50p | 国产亚洲精品久久久久久国模美 | 欧美丰满老熟妇xxxxx性 | 亚洲综合精品香蕉久久网 | 久久精品国产99久久6动漫 | 欧美日韩人成综合在线播放 | 老司机亚洲精品影院 | 亚洲精品久久久久久久久久久 | 亚洲国产高清在线观看视频 | 无套内谢的新婚少妇国语播放 | 色综合久久久无码网中文 | 欧美日韩一区二区三区自拍 | 真人与拘做受免费视频一 | 麻豆精品国产精华精华液好用吗 | 久久99精品久久久久婷婷 | 久久精品国产日本波多野结衣 | 麻豆av传媒蜜桃天美传媒 | 黑人大群体交免费视频 | 露脸叫床粗话东北少妇 | 99riav国产精品视频 | 国产极品视觉盛宴 | 正在播放老肥熟妇露脸 | 国产亚洲精品久久久久久国模美 | 久久国产精品偷任你爽任你 | 亚洲a无码综合a国产av中文 | 呦交小u女精品视频 | 99久久精品国产一区二区蜜芽 | 久久五月精品中文字幕 | 国产婷婷色一区二区三区在线 | 亚洲最大成人网站 | 亚洲娇小与黑人巨大交 | 97夜夜澡人人爽人人喊中国片 | 国产午夜福利100集发布 | 国内精品人妻无码久久久影院蜜桃 | 亚洲中文字幕久久无码 | 四虎永久在线精品免费网址 | 露脸叫床粗话东北少妇 | 亚洲欧美精品aaaaaa片 | 国产在线一区二区三区四区五区 | 男人的天堂av网站 | 久久久久se色偷偷亚洲精品av | 亚洲国产精品无码久久久久高潮 | 亚洲中文字幕在线观看 | 蜜桃臀无码内射一区二区三区 | 日韩欧美群交p片內射中文 | 国产69精品久久久久app下载 | 亚洲国产欧美日韩精品一区二区三区 | 久久综合网欧美色妞网 | 久久综合狠狠综合久久综合88 | 99久久无码一区人妻 | 日本熟妇人妻xxxxx人hd | 色一情一乱一伦一视频免费看 | 国产偷抇久久精品a片69 | 丰满妇女强制高潮18xxxx | 国产超碰人人爽人人做人人添 | 国产免费无码一区二区视频 | 中文字幕乱码亚洲无线三区 | 一本加勒比波多野结衣 | 精品久久久久久亚洲精品 | 欧美成人高清在线播放 | 内射巨臀欧美在线视频 | 国语自产偷拍精品视频偷 | 少妇性l交大片欧洲热妇乱xxx | 久久久久国色av免费观看性色 | 国产免费久久精品国产传媒 | 人妻有码中文字幕在线 | 国产精品对白交换视频 | 国产成人无码a区在线观看视频app | 性色欲情网站iwww九文堂 | 无遮无挡爽爽免费视频 | 国产后入清纯学生妹 | 成年女人永久免费看片 | 久久久久国色av免费观看性色 | 一本久道高清无码视频 | 亚洲а∨天堂久久精品2021 | 黑人粗大猛烈进出高潮视频 | 欧美人与物videos另类 | 999久久久国产精品消防器材 | 丰满少妇女裸体bbw | 在线观看欧美一区二区三区 | 高潮喷水的毛片 | 偷窥村妇洗澡毛毛多 | 欧美人与物videos另类 | 18禁黄网站男男禁片免费观看 | 日本丰满护士爆乳xxxx | 国产亚洲欧美日韩亚洲中文色 | 亚洲中文字幕在线观看 | 一本精品99久久精品77 | 精品国产麻豆免费人成网站 | 九九综合va免费看 | 狠狠色欧美亚洲狠狠色www | 18禁黄网站男男禁片免费观看 | 精品人妻中文字幕有码在线 | 99在线 | 亚洲 | 无码人妻精品一区二区三区不卡 | 青青草原综合久久大伊人精品 | 国精产品一区二区三区 | 精品人妻av区 | 女高中生第一次破苞av | 香蕉久久久久久av成人 | 久在线观看福利视频 | 久久国产劲爆∧v内射 | 国产精品香蕉在线观看 | 国色天香社区在线视频 | 夜精品a片一区二区三区无码白浆 | 色五月五月丁香亚洲综合网 | 国产疯狂伦交大片 | av在线亚洲欧洲日产一区二区 | 国产成人精品视频ⅴa片软件竹菊 | 久久综合九色综合97网 | 国产精品久久久久久无码 | 欧美国产日产一区二区 | 欧美人与善在线com | 国产精品亚洲五月天高清 | 人人澡人人妻人人爽人人蜜桃 | 色婷婷久久一区二区三区麻豆 | 婷婷五月综合激情中文字幕 | 婷婷六月久久综合丁香 | 一本大道伊人av久久综合 | 无码播放一区二区三区 | 日韩精品一区二区av在线 | 国产麻豆精品精东影业av网站 | 夜先锋av资源网站 | 亚洲国产一区二区三区在线观看 | 香港三级日本三级妇三级 | 中文精品无码中文字幕无码专区 | 国产成人精品无码播放 | 天天躁夜夜躁狠狠是什么心态 | 久久久久亚洲精品中文字幕 | 少妇一晚三次一区二区三区 | 大地资源网第二页免费观看 | 67194成是人免费无码 | 欧美 丝袜 自拍 制服 另类 | 九九综合va免费看 | 国产精品久久福利网站 | 狠狠色欧美亚洲狠狠色www | 永久免费精品精品永久-夜色 | 中文字幕人妻丝袜二区 | 免费无码肉片在线观看 | 欧美丰满熟妇xxxx性ppx人交 | 波多野结衣一区二区三区av免费 | 人妻插b视频一区二区三区 | 国产av一区二区三区最新精品 | 综合网日日天干夜夜久久 | 正在播放东北夫妻内射 | 国产深夜福利视频在线 | 亚洲国产日韩a在线播放 | 特大黑人娇小亚洲女 | 成人精品视频一区二区三区尤物 | 无码国产色欲xxxxx视频 | 国模大胆一区二区三区 | 国产精品久久久一区二区三区 | 无套内谢老熟女 | 男人扒开女人内裤强吻桶进去 | 成人精品天堂一区二区三区 | 白嫩日本少妇做爰 | 激情五月综合色婷婷一区二区 | 亚洲人成影院在线无码按摩店 | 国产精品高潮呻吟av久久 | 狠狠色丁香久久婷婷综合五月 | 亚洲狠狠婷婷综合久久 | 一本久道久久综合婷婷五月 | 巨爆乳无码视频在线观看 | 18禁黄网站男男禁片免费观看 | 日产国产精品亚洲系列 | 88国产精品欧美一区二区三区 | 欧美 日韩 人妻 高清 中文 | 中文字幕无线码 | 中文字幕无码日韩欧毛 | 鲁鲁鲁爽爽爽在线视频观看 | 欧美丰满老熟妇xxxxx性 | 中文精品久久久久人妻不卡 | 特黄特色大片免费播放器图片 | 清纯唯美经典一区二区 | 久久久久亚洲精品男人的天堂 | 国产精品毛多多水多 | 色一情一乱一伦一区二区三欧美 | 欧美激情内射喷水高潮 | 鲁大师影院在线观看 | av人摸人人人澡人人超碰下载 | 日韩精品乱码av一区二区 | 一二三四社区在线中文视频 | 国产亚洲人成在线播放 | 久久www免费人成人片 | 久久国产精品二国产精品 | 人人澡人人妻人人爽人人蜜桃 | 婷婷六月久久综合丁香 | 亚洲欧美综合区丁香五月小说 | 亚洲精品一区二区三区在线 | 一个人免费观看的www视频 | 欧美性生交xxxxx久久久 | 日韩少妇白浆无码系列 | 18无码粉嫩小泬无套在线观看 | 国产精品资源一区二区 | 又大又硬又爽免费视频 | 国产精品久免费的黄网站 | 色 综合 欧美 亚洲 国产 | 无套内射视频囯产 | 玩弄人妻少妇500系列视频 | 欧美性生交xxxxx久久久 | 2019nv天堂香蕉在线观看 | 丰满少妇熟乱xxxxx视频 | 亚洲 另类 在线 欧美 制服 | 日本www一道久久久免费榴莲 | 巨爆乳无码视频在线观看 | 国产乱子伦视频在线播放 | a片免费视频在线观看 | 国产精品亚洲一区二区三区喷水 | 无码免费一区二区三区 | 成人免费视频视频在线观看 免费 | 亚欧洲精品在线视频免费观看 | 久久天天躁狠狠躁夜夜免费观看 | 亚洲综合在线一区二区三区 | 亚洲国产综合无码一区 | 99riav国产精品视频 | 久久精品99久久香蕉国产色戒 | 国产 精品 自在自线 | 久久aⅴ免费观看 | 中文无码成人免费视频在线观看 | 成人av无码一区二区三区 | 日韩精品一区二区av在线 | 成人三级无码视频在线观看 | 国产精品无套呻吟在线 | 精品国产一区av天美传媒 | 中文字幕av无码一区二区三区电影 | 欧美午夜特黄aaaaaa片 | 精品无人区无码乱码毛片国产 | 欧美色就是色 | 亚洲高清偷拍一区二区三区 | 亚洲啪av永久无码精品放毛片 | 国产亚洲欧美日韩亚洲中文色 | 大肉大捧一进一出视频出来呀 | 久久久久久国产精品无码下载 | 国产精品久久久久无码av色戒 | 老熟妇乱子伦牲交视频 | 国产乱码精品一品二品 | 奇米影视888欧美在线观看 | 欧美熟妇另类久久久久久多毛 | 亚洲一区二区三区 | 亚洲国产午夜精品理论片 | 欧美freesex黑人又粗又大 | 国产精品亚洲一区二区三区喷水 | 在线亚洲高清揄拍自拍一品区 | 欧美人与禽zoz0性伦交 | а√天堂www在线天堂小说 | 无码午夜成人1000部免费视频 | 中文字幕乱妇无码av在线 | 亚洲熟熟妇xxxx | 国产欧美精品一区二区三区 | 亚洲日韩中文字幕在线播放 | 西西人体www44rt大胆高清 | 国产综合色产在线精品 | 又大又硬又爽免费视频 | 亚洲va欧美va天堂v国产综合 | 中文字幕无线码 | 六十路熟妇乱子伦 | 一本久道高清无码视频 | 帮老师解开蕾丝奶罩吸乳网站 | 福利一区二区三区视频在线观看 | 六月丁香婷婷色狠狠久久 | 国产精品内射视频免费 | 中文字幕乱妇无码av在线 | 免费国产黄网站在线观看 | 国产真实夫妇视频 | 高潮毛片无遮挡高清免费 | 精品国产一区二区三区四区 | 亚洲 a v无 码免 费 成 人 a v | 一本色道久久综合狠狠躁 | 国产国产精品人在线视 | 中文字幕人妻无码一区二区三区 | 亚洲精品综合一区二区三区在线 | 日本免费一区二区三区最新 | 一本久道高清无码视频 | 精品国偷自产在线 | 国产高清不卡无码视频 | 久久精品国产日本波多野结衣 | 偷窥村妇洗澡毛毛多 | 在教室伦流澡到高潮hnp视频 | 日日天日日夜日日摸 | 99久久99久久免费精品蜜桃 | 国内精品一区二区三区不卡 | 成人综合网亚洲伊人 | 国产偷抇久久精品a片69 | 最新版天堂资源中文官网 | 亚洲日韩乱码中文无码蜜桃臀网站 | 99久久精品午夜一区二区 | 国产高潮视频在线观看 | 亚洲国产精品无码一区二区三区 | 色婷婷香蕉在线一区二区 | 在线观看国产一区二区三区 | 国产猛烈高潮尖叫视频免费 | 97人妻精品一区二区三区 | 久久精品国产一区二区三区肥胖 | 无码播放一区二区三区 | 国产三级精品三级男人的天堂 | 国产成人无码区免费内射一片色欲 | 性生交片免费无码看人 | 日本精品人妻无码免费大全 | 色综合久久88色综合天天 | 99久久人妻精品免费一区 | 国产精品高潮呻吟av久久4虎 | 特大黑人娇小亚洲女 | 亚欧洲精品在线视频免费观看 | 亚洲国产午夜精品理论片 | 久激情内射婷内射蜜桃人妖 | 美女黄网站人色视频免费国产 | 在线播放免费人成毛片乱码 | 少女韩国电视剧在线观看完整 | 日日躁夜夜躁狠狠躁 | 2020最新国产自产精品 | 日本免费一区二区三区最新 | 国产精品免费大片 | 婷婷五月综合缴情在线视频 | 又湿又紧又大又爽a视频国产 | 桃花色综合影院 | 国产又爽又黄又刺激的视频 | 高中生自慰www网站 | 亚洲精品欧美二区三区中文字幕 | 亚洲乱码中文字幕在线 | 青春草在线视频免费观看 | 欧美自拍另类欧美综合图片区 | 性色av无码免费一区二区三区 | 高中生自慰www网站 | 精品国产成人一区二区三区 | 人妻无码αv中文字幕久久琪琪布 | 日本大乳高潮视频在线观看 | 成年女人永久免费看片 | 久久99久久99精品中文字幕 | aa片在线观看视频在线播放 | 亚洲精品中文字幕 | 熟妇人妻中文av无码 | 97无码免费人妻超级碰碰夜夜 | 露脸叫床粗话东北少妇 | 欧美性生交xxxxx久久久 | 300部国产真实乱 | 一本色道久久综合亚洲精品不卡 | aⅴ亚洲 日韩 色 图网站 播放 | 亚洲日韩av一区二区三区四区 | 一本久道高清无码视频 | 蜜桃视频插满18在线观看 | 国产片av国语在线观看 | 内射爽无广熟女亚洲 | 中文字幕中文有码在线 | 精品欧洲av无码一区二区三区 | 国产一区二区三区四区五区加勒比 | 内射白嫩少妇超碰 | 又大又硬又爽免费视频 | 三级4级全黄60分钟 | 狠狠综合久久久久综合网 | 亚洲狠狠色丁香婷婷综合 | 高中生自慰www网站 | 亚洲の无码国产の无码步美 | 波多野42部无码喷潮在线 | 欧美野外疯狂做受xxxx高潮 | 国产又爽又猛又粗的视频a片 | 亚洲精品一区二区三区在线观看 | 无码免费一区二区三区 | 装睡被陌生人摸出水好爽 | 狂野欧美激情性xxxx | 亚洲国产精品无码久久久久高潮 | 黑人大群体交免费视频 | 婷婷丁香六月激情综合啪 | 欧美成人高清在线播放 | 欧美国产日韩久久mv | 领导边摸边吃奶边做爽在线观看 | 色一情一乱一伦一区二区三欧美 | a在线观看免费网站大全 | 国产香蕉尹人综合在线观看 | 国产美女精品一区二区三区 | 久久久av男人的天堂 | 亚洲精品国产a久久久久久 | 亚洲精品一区二区三区大桥未久 | 97精品人妻一区二区三区香蕉 | 亚洲中文字幕无码中字 | 亚洲の无码国产の无码影院 | 无遮挡啪啪摇乳动态图 | 日韩 欧美 动漫 国产 制服 | 正在播放老肥熟妇露脸 | 亚洲精品一区三区三区在线观看 | 国产人妻人伦精品 | 伊在人天堂亚洲香蕉精品区 | 2020最新国产自产精品 | 国产香蕉尹人综合在线观看 | 日日躁夜夜躁狠狠躁 | 狠狠躁日日躁夜夜躁2020 | 中文字幕乱码人妻二区三区 | 99久久久无码国产aaa精品 | 女人被爽到呻吟gif动态图视看 | 牲欲强的熟妇农村老妇女视频 | 97久久精品无码一区二区 | 国产情侣作爱视频免费观看 | 熟妇人妻激情偷爽文 | 俺去俺来也在线www色官网 | 成人女人看片免费视频放人 | 国产精品a成v人在线播放 | 亚洲国产精品无码久久久久高潮 | 一个人免费观看的www视频 | 亚洲毛片av日韩av无码 | 午夜性刺激在线视频免费 | 日本乱人伦片中文三区 | 欧美黑人巨大xxxxx | 国产97色在线 | 免 | 兔费看少妇性l交大片免费 | 国产美女精品一区二区三区 | 秋霞特色aa大片 | 久久久久亚洲精品中文字幕 | 西西人体www44rt大胆高清 | 搡女人真爽免费视频大全 | 内射老妇bbwx0c0ck | 疯狂三人交性欧美 | 奇米影视888欧美在线观看 | 亚洲gv猛男gv无码男同 | 亚洲中文字幕在线无码一区二区 | 大地资源网第二页免费观看 | 黑人大群体交免费视频 | 国产精品自产拍在线观看 | 中文无码成人免费视频在线观看 | 人妻熟女一区 | 女人被爽到呻吟gif动态图视看 | 国产后入清纯学生妹 | 久久综合给久久狠狠97色 | 四虎永久在线精品免费网址 | 欧美亚洲日韩国产人成在线播放 | 欧美成人午夜精品久久久 | 中文字幕无码av激情不卡 | 牲欲强的熟妇农村老妇女 | 成 人 免费观看网站 | 1000部啪啪未满十八勿入下载 | 亚洲成av人片天堂网无码】 | 高潮毛片无遮挡高清免费视频 | 丰满护士巨好爽好大乳 | 亚洲人成人无码网www国产 | 鲁一鲁av2019在线 | 国产亚洲人成a在线v网站 | 无码人妻丰满熟妇区毛片18 | 波多野结衣一区二区三区av免费 | 99久久精品无码一区二区毛片 | 六月丁香婷婷色狠狠久久 | 蜜桃av抽搐高潮一区二区 | 国产偷抇久久精品a片69 | 乱人伦人妻中文字幕无码久久网 | 欧美成人高清在线播放 | 久久人人爽人人爽人人片av高清 | 51国偷自产一区二区三区 | 美女扒开屁股让男人桶 | 在线播放亚洲第一字幕 | 色婷婷香蕉在线一区二区 | 国产亚洲精品久久久久久久 | 成人无码视频在线观看网站 | 亚洲国产av美女网站 | 免费男性肉肉影院 | 亚洲日本va中文字幕 | а√资源新版在线天堂 | 欧美 丝袜 自拍 制服 另类 | 乌克兰少妇xxxx做受 | 久久精品丝袜高跟鞋 | 亚洲色欲色欲天天天www | 国产精品丝袜黑色高跟鞋 | 亚洲大尺度无码无码专区 | 欧美性黑人极品hd | 亚洲国产精品毛片av不卡在线 | 久久精品中文闷骚内射 | 性生交大片免费看l | 国产精品丝袜黑色高跟鞋 | 国产激情无码一区二区 | √天堂资源地址中文在线 | 性啪啪chinese东北女人 | 国产精品久久久久久亚洲毛片 | 亚洲经典千人经典日产 | 日本丰满熟妇videos | 国产人妻久久精品二区三区老狼 | 亚洲乱码日产精品bd | 色综合久久久久综合一本到桃花网 | а√天堂www在线天堂小说 | 成人精品视频一区二区三区尤物 | 无码午夜成人1000部免费视频 | 婷婷五月综合激情中文字幕 | 国产亚洲精品精品国产亚洲综合 | 国产精品久久久av久久久 | 精品成在人线av无码免费看 | 婷婷六月久久综合丁香 | a在线亚洲男人的天堂 | 亚洲一区二区三区偷拍女厕 | 国产av无码专区亚洲a∨毛片 | 久久这里只有精品视频9 | a在线观看免费网站大全 | 国产成人精品三级麻豆 | 人人爽人人澡人人人妻 | 日本精品人妻无码免费大全 | 精品偷自拍另类在线观看 | 99国产精品白浆在线观看免费 | 人人澡人人妻人人爽人人蜜桃 | 欧美国产亚洲日韩在线二区 | 88国产精品欧美一区二区三区 | 亚洲人成人无码网www国产 | 亚洲一区二区三区播放 | 国产精品高潮呻吟av久久 | 亚洲国产日韩a在线播放 | 未满小14洗澡无码视频网站 | 未满小14洗澡无码视频网站 | 久久久久久久久蜜桃 | 欧美三级不卡在线观看 | 日本精品久久久久中文字幕 | 人妻夜夜爽天天爽三区 | 亚洲国产精品无码久久久久高潮 | 免费观看又污又黄的网站 | 成人女人看片免费视频放人 | 欧美丰满老熟妇xxxxx性 | 男女作爱免费网站 | 国产午夜视频在线观看 | 成 人 免费观看网站 | 98国产精品综合一区二区三区 | 樱花草在线播放免费中文 | 日韩亚洲欧美中文高清在线 | 成人精品一区二区三区中文字幕 | 日本一区二区三区免费高清 | 国内精品久久久久久中文字幕 | 国产精品久久久av久久久 | 精品日本一区二区三区在线观看 | 人妻少妇精品无码专区二区 | 爽爽影院免费观看 | 福利一区二区三区视频在线观看 | 欧美丰满老熟妇xxxxx性 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 国产精品永久免费视频 | 无码福利日韩神码福利片 | 影音先锋中文字幕无码 | 2019nv天堂香蕉在线观看 | 一本精品99久久精品77 | 国产国产精品人在线视 | 国产精品亚洲а∨无码播放麻豆 | www国产亚洲精品久久网站 | 又大又紧又粉嫩18p少妇 | 性欧美熟妇videofreesex | 日本欧美一区二区三区乱码 | 亚洲国产一区二区三区在线观看 | 中文字幕无码免费久久9一区9 | 久久精品国产一区二区三区肥胖 | 性史性农村dvd毛片 | 青草青草久热国产精品 | 日本一卡2卡3卡四卡精品网站 | 国产9 9在线 | 中文 | 国产精品沙发午睡系列 | 久久www免费人成人片 | 成人精品视频一区二区三区尤物 | 日本精品人妻无码免费大全 | 精品久久久久久亚洲精品 | 日本肉体xxxx裸交 | 荫蒂被男人添的好舒服爽免费视频 | 蜜桃臀无码内射一区二区三区 | 曰韩少妇内射免费播放 | 亚洲 a v无 码免 费 成 人 a v | 嫩b人妻精品一区二区三区 | 久久久久se色偷偷亚洲精品av | 激情综合激情五月俺也去 | 人人妻人人澡人人爽精品欧美 | 疯狂三人交性欧美 | 亚洲日韩乱码中文无码蜜桃臀网站 | 国产亚洲精品久久久ai换 | 少妇的肉体aa片免费 | 国产乱子伦视频在线播放 | 亚洲区欧美区综合区自拍区 | 午夜精品久久久内射近拍高清 | 伊人久久大香线蕉av一区二区 | 乱人伦人妻中文字幕无码久久网 | 蜜臀av无码人妻精品 | 六月丁香婷婷色狠狠久久 | av无码电影一区二区三区 | 国内精品人妻无码久久久影院蜜桃 | 久久综合色之久久综合 | 最新国产乱人伦偷精品免费网站 | 亚洲а∨天堂久久精品2021 | 国产亚洲精品精品国产亚洲综合 | 国内精品人妻无码久久久影院 | 日韩av无码一区二区三区 | 国产内射爽爽大片视频社区在线 | 成人三级无码视频在线观看 | 欧美一区二区三区视频在线观看 | 欧美freesex黑人又粗又大 | 国产特级毛片aaaaaaa高清 | 真人与拘做受免费视频一 | 精品久久久久香蕉网 | 日本精品人妻无码免费大全 | 色 综合 欧美 亚洲 国产 | 丁香花在线影院观看在线播放 | 呦交小u女精品视频 | 无码人妻黑人中文字幕 | 精品久久久无码中文字幕 | 成人一在线视频日韩国产 | 成人免费视频一区二区 | 在线天堂新版最新版在线8 | 久久久av男人的天堂 | 亚洲国产欧美日韩精品一区二区三区 | 亚洲欧美色中文字幕在线 | 奇米影视7777久久精品人人爽 | 亚洲中文字幕在线无码一区二区 | 欧美xxxx黑人又粗又长 | 色婷婷av一区二区三区之红樱桃 | 青草青草久热国产精品 | 国产一区二区三区四区五区加勒比 | 国产极品美女高潮无套在线观看 | 亚洲人成无码网www | 精品无码国产一区二区三区av | 东北女人啪啪对白 | 国产猛烈高潮尖叫视频免费 | 国产av一区二区三区最新精品 | 人人澡人人透人人爽 | 日韩人妻无码一区二区三区久久99 | 捆绑白丝粉色jk震动捧喷白浆 | 国产后入清纯学生妹 | 黑森林福利视频导航 | 日韩欧美中文字幕在线三区 | 久久精品女人的天堂av | 中文字幕av日韩精品一区二区 | 自拍偷自拍亚洲精品10p | 国产精品无码成人午夜电影 | 久久久久久亚洲精品a片成人 | 激情内射亚州一区二区三区爱妻 | 国产精品丝袜黑色高跟鞋 | 一本色道久久综合亚洲精品不卡 | 东京热一精品无码av | 国产精品办公室沙发 | 久久久中文字幕日本无吗 | 久久精品一区二区三区四区 | 国产欧美亚洲精品a | 国产香蕉97碰碰久久人人 | 国产va免费精品观看 | 一本无码人妻在中文字幕免费 | 色综合久久中文娱乐网 | 国产午夜亚洲精品不卡下载 | 亚欧洲精品在线视频免费观看 | 久久精品国产精品国产精品污 | 中文无码成人免费视频在线观看 | 麻豆蜜桃av蜜臀av色欲av | 国产熟女一区二区三区四区五区 | 亚洲无人区一区二区三区 | 久久亚洲精品中文字幕无男同 | 亚洲s色大片在线观看 | 澳门永久av免费网站 | 99久久精品日本一区二区免费 | 奇米影视7777久久精品人人爽 | 伊人久久大香线蕉av一区二区 | 999久久久国产精品消防器材 | 久青草影院在线观看国产 | 亚洲精品综合五月久久小说 | 色婷婷香蕉在线一区二区 | 少妇一晚三次一区二区三区 | 国产人妻精品午夜福利免费 | 99精品国产综合久久久久五月天 | 欧美乱妇无乱码大黄a片 | 久久精品人妻少妇一区二区三区 | a国产一区二区免费入口 | 亚洲精品美女久久久久久久 | 国产成人无码a区在线观看视频app | 亚洲の无码国产の无码步美 | 久久久久久av无码免费看大片 | 丰满妇女强制高潮18xxxx | 亚洲综合久久一区二区 | 无遮无挡爽爽免费视频 | 日本饥渴人妻欲求不满 | 欧美大屁股xxxxhd黑色 | 国产精品手机免费 | 人人妻人人藻人人爽欧美一区 | 欧美大屁股xxxxhd黑色 | 领导边摸边吃奶边做爽在线观看 | 精品国产青草久久久久福利 | 99er热精品视频 | 一二三四社区在线中文视频 | 中文字幕无码av波多野吉衣 | 久久久av男人的天堂 | 精品乱码久久久久久久 | 亚洲天堂2017无码 | 天干天干啦夜天干天2017 | 老熟妇仑乱视频一区二区 | 久久久精品456亚洲影院 | 中文毛片无遮挡高清免费 | 黑人粗大猛烈进出高潮视频 | 欧美zoozzooz性欧美 | 国产人妻人伦精品1国产丝袜 | 欧美性生交活xxxxxdddd | 一本加勒比波多野结衣 | 亚洲日本va中文字幕 | 美女黄网站人色视频免费国产 | 在线观看欧美一区二区三区 | 国产成人精品优优av | 久久久www成人免费毛片 | 久久无码专区国产精品s | 高潮喷水的毛片 | 图片区 小说区 区 亚洲五月 | 亚洲理论电影在线观看 | 国产精品久久久久久亚洲影视内衣 | 国产亚洲精品久久久久久国模美 | 少妇人妻大乳在线视频 | 婷婷丁香五月天综合东京热 | 十八禁视频网站在线观看 | 白嫩日本少妇做爰 | 国产亚洲精品精品国产亚洲综合 | 国产精品18久久久久久麻辣 | 午夜男女很黄的视频 | 人人妻人人澡人人爽人人精品浪潮 | 色妞www精品免费视频 | 免费网站看v片在线18禁无码 | 免费中文字幕日韩欧美 | 欧洲vodafone精品性 | 亚洲成熟女人毛毛耸耸多 | 久久国产精品二国产精品 | 99久久婷婷国产综合精品青草免费 | 国产乱码精品一品二品 | 亚洲色欲色欲天天天www | 精品水蜜桃久久久久久久 | 内射白嫩少妇超碰 | 久久五月精品中文字幕 | 狠狠色噜噜狠狠狠7777奇米 | 日本精品久久久久中文字幕 | 国产精品无码mv在线观看 | 精品亚洲韩国一区二区三区 | 波多野结衣aⅴ在线 | 国产精品无码永久免费888 | 亚洲精品综合一区二区三区在线 | 男人扒开女人内裤强吻桶进去 | 亚洲日韩精品欧美一区二区 | 97夜夜澡人人爽人人喊中国片 | 美女张开腿让人桶 | 亚洲一区二区三区偷拍女厕 | 性色欲网站人妻丰满中文久久不卡 | 亚洲综合伊人久久大杳蕉 | 亚洲国产精品成人久久蜜臀 | 国产无套内射久久久国产 | 国产9 9在线 | 中文 | 女人被爽到呻吟gif动态图视看 | 少妇邻居内射在线 | 日日摸夜夜摸狠狠摸婷婷 | 午夜精品久久久久久久 | 午夜精品一区二区三区的区别 | 纯爱无遮挡h肉动漫在线播放 | 国产特级毛片aaaaaaa高清 | 在线播放亚洲第一字幕 | 久久综合给久久狠狠97色 | 欧美人与禽猛交狂配 | 中文无码精品a∨在线观看不卡 | 日本精品人妻无码免费大全 | 国产疯狂伦交大片 | 美女黄网站人色视频免费国产 | 欧美成人午夜精品久久久 | 日日鲁鲁鲁夜夜爽爽狠狠 | 国产精品人人妻人人爽 | 亚洲精品久久久久avwww潮水 | 无码av中文字幕免费放 | 亚洲色欲色欲欲www在线 | 国产精品久久久久久亚洲毛片 | 少妇无码吹潮 | 狠狠噜狠狠狠狠丁香五月 | 成人无码精品1区2区3区免费看 | 啦啦啦www在线观看免费视频 | 国产精品久久久久久久9999 | 国内综合精品午夜久久资源 | 国产激情综合五月久久 | 撕开奶罩揉吮奶头视频 | 亚洲国产一区二区三区在线观看 | 少妇太爽了在线观看 | 欧美激情综合亚洲一二区 | 国产精品福利视频导航 | 亚洲一区二区三区含羞草 | 亚洲成色www久久网站 | 国产精品亚洲а∨无码播放麻豆 | 欧美野外疯狂做受xxxx高潮 | 国产精品爱久久久久久久 | 99久久婷婷国产综合精品青草免费 | 理论片87福利理论电影 | 美女毛片一区二区三区四区 | 强辱丰满人妻hd中文字幕 | 国产两女互慰高潮视频在线观看 | 欧美xxxx黑人又粗又长 | 九一九色国产 | 暴力强奷在线播放无码 | 亚洲区欧美区综合区自拍区 | 伊人久久婷婷五月综合97色 | 亚洲国产一区二区三区在线观看 | 成人精品视频一区二区三区尤物 | 牛和人交xxxx欧美 | 久久精品无码一区二区三区 | 无套内射视频囯产 | 日日碰狠狠丁香久燥 | 一本一道久久综合久久 | 久9re热视频这里只有精品 | 国产一区二区三区四区五区加勒比 | 国产精品久久久久久亚洲影视内衣 | 久久综合狠狠综合久久综合88 | 熟女少妇在线视频播放 | 亚洲欧美中文字幕5发布 | 漂亮人妻洗澡被公强 日日躁 | 成人试看120秒体验区 | 亚洲一区av无码专区在线观看 | 一本色道久久综合亚洲精品不卡 | 久精品国产欧美亚洲色aⅴ大片 | 亚洲欧洲无卡二区视頻 | 国产精品亚洲lv粉色 | 日韩av激情在线观看 | 久久久久亚洲精品男人的天堂 | 精品乱子伦一区二区三区 | 国产69精品久久久久app下载 | 无码国产色欲xxxxx视频 | 国产精品第一区揄拍无码 | 亚洲无人区午夜福利码高清完整版 | 日本欧美一区二区三区乱码 | 丁香花在线影院观看在线播放 | 午夜精品久久久久久久久 | 精品偷拍一区二区三区在线看 | 撕开奶罩揉吮奶头视频 | 免费人成在线观看网站 | 中文精品久久久久人妻不卡 | 一二三四在线观看免费视频 | 国产成人精品必看 | 午夜无码区在线观看 | 国产午夜亚洲精品不卡下载 | 国产午夜亚洲精品不卡下载 | 中文字幕+乱码+中文字幕一区 | av人摸人人人澡人人超碰下载 | 成人试看120秒体验区 | 国内少妇偷人精品视频 | 伊人久久大香线蕉av一区二区 | 宝宝好涨水快流出来免费视频 | 亚洲成av人片在线观看无码不卡 | 中文字幕av无码一区二区三区电影 | 色 综合 欧美 亚洲 国产 | 国产97人人超碰caoprom | 国产精品多人p群无码 | 亚洲成在人网站无码天堂 | 99精品无人区乱码1区2区3区 | 精品一区二区三区波多野结衣 | 波多野结衣乳巨码无在线观看 | 特黄特色大片免费播放器图片 | 少妇人妻大乳在线视频 | 人妻插b视频一区二区三区 | 亚洲精品综合一区二区三区在线 | 国产97在线 | 亚洲 | 好爽又高潮了毛片免费下载 | 精品久久久中文字幕人妻 | 亚洲综合精品香蕉久久网 | 九月婷婷人人澡人人添人人爽 | 蜜桃臀无码内射一区二区三区 | 日本熟妇乱子伦xxxx | 亚洲综合无码久久精品综合 | 成人亚洲精品久久久久 | 亚洲春色在线视频 | 久久久亚洲欧洲日产国码αv | 秋霞特色aa大片 | 日本饥渴人妻欲求不满 | 任你躁国产自任一区二区三区 | 老子影院午夜精品无码 | 99久久精品国产一区二区蜜芽 | 野外少妇愉情中文字幕 | 成人三级无码视频在线观看 | 男女超爽视频免费播放 | 一二三四在线观看免费视频 | 成人精品视频一区二区三区尤物 | 国产suv精品一区二区五 | 人妻与老人中文字幕 | 亚洲自偷精品视频自拍 | 久久久亚洲欧洲日产国码αv | 任你躁国产自任一区二区三区 | 丁香啪啪综合成人亚洲 | www国产精品内射老师 | 亚洲人成网站在线播放942 | 中文字幕乱码中文乱码51精品 | 内射老妇bbwx0c0ck | 中文字幕乱码人妻无码久久 | 日本xxxx色视频在线观看免费 | 日本护士毛茸茸高潮 | 色综合久久88色综合天天 | 一个人看的www免费视频在线观看 | 永久黄网站色视频免费直播 | 激情综合激情五月俺也去 | 日本熟妇人妻xxxxx人hd | 色综合久久久无码中文字幕 | 国产午夜福利亚洲第一 | 精品人妻人人做人人爽 | 男女爱爱好爽视频免费看 | 蜜桃视频韩日免费播放 | 国产午夜亚洲精品不卡下载 | 国产香蕉97碰碰久久人人 | 亚洲国产日韩a在线播放 | 亚洲 欧美 激情 小说 另类 | 亚洲精品中文字幕 | 精品无码成人片一区二区98 | 中文字幕精品av一区二区五区 | 精品一区二区三区无码免费视频 | 日日天干夜夜狠狠爱 | 亚洲精品一区二区三区四区五区 | 疯狂三人交性欧美 | 熟妇人妻激情偷爽文 | 国产精品久久久久9999小说 | 国产明星裸体无码xxxx视频 | 亚洲精品久久久久中文第一幕 | 欧美成人免费全部网站 | 亚洲国产精品久久久天堂 | 日本精品高清一区二区 | 久久精品国产精品国产精品污 | 国产精品久久国产精品99 | 国产精品亚洲专区无码不卡 | 久久国语露脸国产精品电影 | 亚洲码国产精品高潮在线 | 乱人伦人妻中文字幕无码久久网 | 欧美freesex黑人又粗又大 | 国产成人亚洲综合无码 | 波多野结衣av一区二区全免费观看 | 熟妇女人妻丰满少妇中文字幕 | 国内综合精品午夜久久资源 | 亚洲成熟女人毛毛耸耸多 | 99精品视频在线观看免费 | 青青青手机频在线观看 | 国产熟妇另类久久久久 | 久久国产36精品色熟妇 | 荫蒂被男人添的好舒服爽免费视频 | 亚洲日韩乱码中文无码蜜桃臀网站 | 亚洲综合另类小说色区 | 2020久久香蕉国产线看观看 | 狠狠噜狠狠狠狠丁香五月 | 午夜免费福利小电影 | 欧美日韩一区二区综合 | 无码av岛国片在线播放 | 久久久久人妻一区精品色欧美 | 无码午夜成人1000部免费视频 | 18禁止看的免费污网站 | 日本一区二区三区免费高清 | 奇米影视888欧美在线观看 | 日本护士毛茸茸高潮 | 国产乱人偷精品人妻a片 | 日日噜噜噜噜夜夜爽亚洲精品 | 丰满人妻精品国产99aⅴ | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 无码帝国www无码专区色综合 | 亚洲国产精华液网站w | 成熟人妻av无码专区 | 成人免费无码大片a毛片 | 樱花草在线播放免费中文 | 国产免费无码一区二区视频 | 人人妻人人澡人人爽人人精品浪潮 | 中文字幕无码人妻少妇免费 | 成人动漫在线观看 | 亚洲精品久久久久久一区二区 | 国产成人午夜福利在线播放 | 久久精品人人做人人综合试看 | 国产成人无码一二三区视频 | 国产色xx群视频射精 | 中文毛片无遮挡高清免费 | 动漫av网站免费观看 | 国产成人精品无码播放 | 丰腴饱满的极品熟妇 | 久久久久久国产精品无码下载 | 在线观看国产午夜福利片 | 性欧美牲交xxxxx视频 | 国产精品va在线观看无码 | 亚洲精品久久久久中文第一幕 | 牛和人交xxxx欧美 | 色婷婷综合中文久久一本 | 在线欧美精品一区二区三区 | 日韩精品乱码av一区二区 | 亚洲精品鲁一鲁一区二区三区 | 亚洲成a人一区二区三区 | 樱花草在线播放免费中文 | 国产精品无套呻吟在线 | 国产成人精品久久亚洲高清不卡 | 国产乱子伦视频在线播放 | 日日碰狠狠丁香久燥 | 奇米影视7777久久精品 | 巨爆乳无码视频在线观看 | 免费播放一区二区三区 | 天堂亚洲2017在线观看 | 欧美性猛交xxxx富婆 | 国产办公室秘书无码精品99 | 亚洲va中文字幕无码久久不卡 | 亚洲人成网站色7799 | 东京热男人av天堂 | 色五月五月丁香亚洲综合网 | 无码av岛国片在线播放 | 国精产品一区二区三区 | 国产乱人伦偷精品视频 | 欧美老人巨大xxxx做受 | 麻豆成人精品国产免费 | 熟妇人妻无码xxx视频 | 图片区 小说区 区 亚洲五月 | 国产口爆吞精在线视频 | 少妇人妻大乳在线视频 | 男女猛烈xx00免费视频试看 | 少妇被黑人到高潮喷出白浆 | 亚洲欧洲日本综合aⅴ在线 | www国产亚洲精品久久久日本 | 国产女主播喷水视频在线观看 | 亚洲国产欧美日韩精品一区二区三区 | 中文无码伦av中文字幕 | 老子影院午夜伦不卡 | 欧美人与善在线com | 成人无码视频在线观看网站 | 一本久久伊人热热精品中文字幕 | 乱人伦人妻中文字幕无码久久网 | 超碰97人人做人人爱少妇 | 麻豆国产人妻欲求不满谁演的 | 99久久精品无码一区二区毛片 | 国产精品自产拍在线观看 | 午夜肉伦伦影院 | 国产精品久久久久无码av色戒 | 久久熟妇人妻午夜寂寞影院 | 色欲综合久久中文字幕网 | 国产精品亚洲综合色区韩国 | 狠狠噜狠狠狠狠丁香五月 | 丰满护士巨好爽好大乳 | 久久97精品久久久久久久不卡 | 国产精品无码mv在线观看 | 亚洲一区二区观看播放 | 欧美大屁股xxxxhd黑色 | 国产成人无码区免费内射一片色欲 | 久热国产vs视频在线观看 | 内射老妇bbwx0c0ck | 亚洲综合精品香蕉久久网 | www国产精品内射老师 | 国产精品亚洲综合色区韩国 | 97久久精品无码一区二区 | 国产午夜无码视频在线观看 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 欧美日韩久久久精品a片 | www国产精品内射老师 | 久久久久久久久蜜桃 | 无码帝国www无码专区色综合 | 啦啦啦www在线观看免费视频 | 久久精品国产精品国产精品污 | 精品国产精品久久一区免费式 | 国产精品久久精品三级 | 天天摸天天碰天天添 | 久久熟妇人妻午夜寂寞影院 | 巨爆乳无码视频在线观看 | 久久99国产综合精品 | 永久黄网站色视频免费直播 | 玩弄人妻少妇500系列视频 | 疯狂三人交性欧美 | 亚洲精品综合五月久久小说 | 少妇性l交大片欧洲热妇乱xxx | 国产区女主播在线观看 | 国产亚洲视频中文字幕97精品 | 国内丰满熟女出轨videos | 99国产欧美久久久精品 | 午夜理论片yy44880影院 | 国内老熟妇对白xxxxhd | 两性色午夜视频免费播放 | 在线看片无码永久免费视频 | 国产无套内射久久久国产 | 人妻少妇被猛烈进入中文字幕 | 婷婷丁香五月天综合东京热 | 水蜜桃亚洲一二三四在线 | 97色伦图片97综合影院 | 自拍偷自拍亚洲精品被多人伦好爽 | 漂亮人妻洗澡被公强 日日躁 | 亚洲色www成人永久网址 | 亚洲天堂2017无码中文 | 色综合久久久无码网中文 | 亚洲国产av美女网站 | 久久久久久亚洲精品a片成人 | 国产小呦泬泬99精品 | 亚洲 日韩 欧美 成人 在线观看 | 女高中生第一次破苞av | 亚洲精品综合一区二区三区在线 | 无码一区二区三区在线观看 | 图片小说视频一区二区 | 大乳丰满人妻中文字幕日本 |