最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談django url請(qǐng)求與數(shù)據(jù)庫(kù)連接池的共享問(wèn)題

 更新時(shí)間:2019年08月29日 09:16:59   作者:rongyongfeikai2  
今天小編就為大家分享一篇淺談django url請(qǐng)求與數(shù)據(jù)庫(kù)連接池的共享問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

但凡介紹數(shù)據(jù)庫(kù)連接池的文章,都會(huì)說(shuō)“數(shù)據(jù)庫(kù)連接是一種關(guān)鍵的有限的昂貴的資源,這一點(diǎn)在多用戶(hù)的網(wǎng)頁(yè)應(yīng)用程序中體現(xiàn)得尤為突出。對(duì)數(shù)據(jù)庫(kù)連接的管理能顯著影響到整個(gè)應(yīng)用程序的伸縮性和健壯性,影響到程序的性能指標(biāo)。數(shù)據(jù)庫(kù)連接池正是針對(duì)這個(gè)問(wèn)題提出來(lái)的。數(shù)據(jù)庫(kù)連接池負(fù)責(zé)分配、管理和釋放數(shù)據(jù)庫(kù)連接,它允許應(yīng)用程序重復(fù)使用一個(gè)現(xiàn)有的數(shù)據(jù)庫(kù)連接,而不是再重新建立一個(gè);釋放空閑時(shí)間超過(guò)最大空閑時(shí)間的數(shù)據(jù)庫(kù)連接來(lái)避免因?yàn)闆](méi)有釋放數(shù)據(jù)庫(kù)連接而引起的數(shù)據(jù)庫(kù)連接遺漏。這項(xiàng)技術(shù)能明顯提高對(duì)數(shù)據(jù)庫(kù)操作的性能?!?/p>

這句話(huà)雖然說(shuō)得很好,但也很讓人疑惑。比如,多個(gè)請(qǐng)求是怎樣共用數(shù)據(jù)庫(kù)連接池?。?/p>

其實(shí),數(shù)據(jù)庫(kù)連接池主要是利用了程序,靜態(tài)變量與靜態(tài)方法的概念實(shí)現(xiàn)的。靜態(tài)變量和靜態(tài)方法,是程序運(yùn)行時(shí),就被加載到內(nèi)存中的。該進(jìn)程中所有對(duì)于它的訪(fǎng)問(wèn),都是對(duì)“唯一”的它的訪(fǎng)問(wèn)。所以,才能有數(shù)據(jù)庫(kù)連接池被共享的概念。

可以看到,靜態(tài)變量a以及靜態(tài)方法add,即使類(lèi)A從未被實(shí)例化過(guò),它們也都會(huì)被加載到內(nèi)存中。

另外,在python的此次運(yùn)行(一個(gè)進(jìn)程)中,多次對(duì)a的操作,都是對(duì)為一個(gè)的這個(gè)a變量的操作,所以它的值是在被操作后累加的。

這個(gè)在我上面簡(jiǎn)單的例子中很好理解。那么如何理解Web應(yīng)用程序(如django程序)在接到url請(qǐng)求時(shí)的場(chǎng)景呢?在多個(gè)請(qǐng)求時(shí),他們是如何可以共享數(shù)據(jù)庫(kù)連接池的?

我寫(xiě)了一個(gè)簡(jiǎn)單的例子:

Test model,使用了單例模式,它的功能是調(diào)用sqlalchemy.pool中的數(shù)據(jù)庫(kù)連接池。

而views.py的index方法,則是調(diào)用Test的getinstance方法獲得它的實(shí)例,同時(shí)用它的數(shù)據(jù)庫(kù)連接池。

為了看得清楚,我在這個(gè)方法中增加打印了當(dāng)前所屬進(jìn)程的pid,test和test.connpool信息。

首先要說(shuō)明一點(diǎn),apache在windows和linux中的運(yùn)行方式不盡相同(windows是兩個(gè)httpd進(jìn)程,一個(gè)父進(jìn)程,一個(gè)子進(jìn)程,子進(jìn)程里面多個(gè)線(xiàn)程處理請(qǐng)求)。在linux中,默認(rèn)用prefork的方式運(yùn)行。即一個(gè)父進(jìn)程,多個(gè)子進(jìn)程,這多個(gè)子進(jìn)程負(fù)責(zé)處理web請(qǐng)求。

如下圖所示:

然后我們嘗試多次url請(qǐng)求(適當(dāng)變化url,避免緩存);并記錄結(jié)果:

http://10.67.2.21:8081/ips/
count:3,processid:20016<br/>test:<ipsapp.models.Test object at 0x7f2b1070ac50>,connpool:<sqlalchemy.pool.QueuePool object at 0x7f2b1070ad10>

http://10.67.2.21:8081/ips/?user=kjsdkfjsdf&kljsdlkfjsdf
count:3,processid:20013<br/>test:<ipsapp.models.Test object at 0x7f2b107c6c10>,connpool:<sqlalchemy.pool.QueuePool object at 0x7f2b107c6cd0>

http://10.67.2.21:8081/ips/?user=kjsdkfjsdf&kljsdlkfjsdf&pass=ksjdkjdf
count:3,processid:20018<br/>test:<ipsapp.models.Test object at 0x7f2b103c6c50>,connpool:<sqlalchemy.pool.QueuePool object at 0x7f2b103c6d10>

http://10.67.2.21:8081/ips/?user=123u42i3u4
count:3,processid:20016<br/>test:<ipsapp.models.Test object at 0x7f2b1070ac50>,connpool:<sqlalchemy.pool.QueuePool object at 0x7f2b1070ad10>

http://10.67.2.21:8081/ips/?user=123u42i3u4&tewstsjdfkjslfj
count:3,processid:20013<br/>test:<ipsapp.models.Test object at 0x7f2b107c6c10>,connpool:<sqlalchemy.pool.QueuePool object at 0x7f2b107c6cd0>

http://10.67.2.21:8081/ips/?user=passwode
count:3,processid:20018<br/>test:<ipsapp.models.Test object at 0x7f2b103c6c50>,connpool:<sqlalchemy.pool.QueuePool object at 0x7f2b103c6d10>

http://10.67.2.21:8081/ips/?newiusd=kjsdkjfd&kjsdkjf=ksdjflksjdlkf
count:3,processid:20016<br/>test:<ipsapp.models.Test object at 0x7f2b1070ac50>,connpool:<sqlalchemy.pool.QueuePool object at 0x7f2b1070ad10>

apache pid Test object QueuePool object
20016 0x7f2b1070ac50 0x7f2b1070ad10
20013 0x7f2b107c6c10 0x7f2b107c6cd0
20018 0x7f2b103c6c50 0x7f2b103c6d10
20016 0x7f2b1070ac50 0x7f2b1070ad10
20013 0x7f2b107c6c10 0x7f2b107c6cd0
20018 0x7f2b103c6c50 0x7f2b103c6d10
20016 0x7f2b1070ac50 0x7f2b1070ad10

我把分屬于不同apache進(jìn)程處理的請(qǐng)求用顏色標(biāo)出了,在本例子中,7個(gè)請(qǐng)求,分配到了3個(gè)apache進(jìn)程處理??梢钥吹剑煌粋€(gè)apache子進(jìn)程處理的請(qǐng)求,是共用同一個(gè)test和test.connpool實(shí)例的,即他們共享數(shù)據(jù)庫(kù)連接池。

所以,數(shù)據(jù)庫(kù)連接池,對(duì)于web請(qǐng)求而言,是屬于同一個(gè)apache子進(jìn)程處理的請(qǐng)求共用一個(gè)數(shù)據(jù)庫(kù)連接池。

以上這篇淺談django url請(qǐng)求與數(shù)據(jù)庫(kù)連接池的共享問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python函數(shù)之zip函數(shù)的介紹與實(shí)際應(yīng)用

    Python函數(shù)之zip函數(shù)的介紹與實(shí)際應(yīng)用

    zip() 函數(shù)用于將可迭代的對(duì)象作為參數(shù),將對(duì)象中對(duì)應(yīng)的元素打包成一個(gè)個(gè)元組,然后返回由這些元組組成的對(duì)象(python2 返回的是這些元組組成的列表 ),下面這篇文章主要給大家介紹了關(guān)于Python函數(shù)之zip函數(shù)實(shí)際應(yīng)用的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • 一篇文章帶你了解python字典基礎(chǔ)

    一篇文章帶你了解python字典基礎(chǔ)

    這篇文章主要介紹了Python字典及字典基本操作方法,結(jié)合實(shí)例形式詳細(xì)分析了Python字典的概念、創(chuàng)建、格式化及常用操作方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2021-08-08
  • PyInstaller運(yùn)行原理及常用操作詳解

    PyInstaller運(yùn)行原理及常用操作詳解

    這篇文章主要介紹了PyInstaller運(yùn)行原理及常用操作詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Python走樓梯問(wèn)題解決方法示例

    Python走樓梯問(wèn)題解決方法示例

    這篇文章主要介紹了Python走樓梯問(wèn)題解決方法,結(jié)合實(shí)例形式分析了Python基于遞歸與迭代思想解決走樓梯問(wèn)題的相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • Python實(shí)現(xiàn)讀取csv文件并進(jìn)行排序

    Python實(shí)現(xiàn)讀取csv文件并進(jìn)行排序

    這篇文章主要為大家詳細(xì)介紹了一個(gè)python簡(jiǎn)單案例并進(jìn)行代碼展示,本文的案例是利用pandas庫(kù)實(shí)現(xiàn)讀取csv文件并按照列的從小到大進(jìn)行排序,需要的可以參考一下
    2023-02-02
  • 使用Python編寫(xiě)一個(gè)粘貼python源代碼就能運(yùn)行的工具

    使用Python編寫(xiě)一個(gè)粘貼python源代碼就能運(yùn)行的工具

    以下是一個(gè)使用wxPython模塊創(chuàng)建帶有Memo(文本輸入框)和保存按鈕的GUI程序示例,點(diǎn)擊保存按鈕后將Memo內(nèi)容保存到指定路徑下的文件,并提供運(yùn)行按鈕以執(zhí)行指定的Python腳本,需要的朋友可以參考下
    2025-04-04
  • Django xadmin開(kāi)啟搜索功能的實(shí)現(xiàn)

    Django xadmin開(kāi)啟搜索功能的實(shí)現(xiàn)

    今天小編就為大家分享一篇Django xadmin開(kāi)啟搜索功能的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • Python制作一個(gè)多功能音樂(lè)播放器

    Python制作一個(gè)多功能音樂(lè)播放器

    本文主要介紹了Python制作一個(gè)多功能音樂(lè)播放器,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Python?matplotlib.pyplot.hist()繪制直方圖的方法實(shí)例

    Python?matplotlib.pyplot.hist()繪制直方圖的方法實(shí)例

    直方圖(Histogram)又稱(chēng)質(zhì)量分布圖,是一種統(tǒng)計(jì)報(bào)告圖,由一系列高度不等的縱向條紋或線(xiàn)段表示數(shù)據(jù)分布的情況,一般用橫軸表示數(shù)據(jù)類(lèi)型,縱軸表示分布情況,下面這篇文章主要給大家介紹了關(guān)于Python?matplotlib.pyplot.hist()繪制直方圖的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • Python繪制土地利用和土地覆蓋類(lèi)型圖示例詳解

    Python繪制土地利用和土地覆蓋類(lèi)型圖示例詳解

    本文介紹了如何使用Python繪制土地利用和土地覆蓋類(lèi)型圖,并提供了詳細(xì)的代碼示例,通過(guò)安裝所需的庫(kù),準(zhǔn)備地理數(shù)據(jù),使用geopandas和matplotlib等庫(kù),可以繪制出土地利用和覆蓋類(lèi)型圖,感興趣的朋友一起看看吧
    2025-01-01

最新評(píng)論

天水市| 姚安县| 普兰店市| 涟水县| 花莲县| 海口市| 类乌齐县| 柳河县| 平江县| 潜山县| 务川| 滦平县| 阿拉善盟| 大英县| 宁国市| 定结县| 康定县| 新化县| 吴江市| 太仓市| 陇西县| 新蔡县| 青田县| 固阳县| 宾川县| 泰宁县| 甘肃省| 湖北省| 西吉县| 孟州市| 工布江达县| 青河县| 施甸县| 梨树县| 南澳县| 罗城| 新乡市| 英吉沙县| 乡城县| 云林县| 饶阳县|