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

全面剖析Python的Django框架中的項(xiàng)目部署技巧第2/2頁(yè)

 更新時(shí)間:2015年04月16日 16:10:29   投稿:goldensun  
這篇文章主要全面剖析了Python的Django框架的部署技巧,包括Fabric等自動(dòng)化部署和建立單元測(cè)試等方面,強(qiáng)烈推薦!需要的朋友可以參考下

from fabric.api import lcd, localdef deploy():
  with lcd('/path/to/my/prod/area/'):
 
    # With git...
    local('git pull /my/path/to/dev/area/')
 
    # With Mercurial...
    local('hg pull /my/path/to/dev/area/')
    local('hg update')
 
    # With both
    local('python manage.py migrate myapp')
    local('python manage.py test myapp')
    local('/my/command/to/restart/webserver')

這將會(huì)從開(kāi)發(fā)主分支拉回(pull)變更,運(yùn)行你實(shí)施的任何遷移,運(yùn)行測(cè)試,并且重啟你的web服務(wù)器。這些只需在命令行中的一條簡(jiǎn)單的命令。如果其中的一條命令失敗了,腳本將會(huì)停止運(yùn)行并報(bào)告發(fā)生的事情。一旦你修復(fù)了這個(gè)問(wèn)題,無(wú)需再手工運(yùn)行其余步驟。因?yàn)樗鼈兪莾绲鹊?,你只需重新運(yùn)行部署命令,一切都將恢復(fù)正常。

(譯注:idempotent 冪等,某一元運(yùn)算為冪等的時(shí),其作用在任一元素兩次后會(huì)和其作用一次的結(jié)果相同。)

注意上面的代碼是假設(shè)你部署在相同的機(jī)器上。如果不是這樣的話,這個(gè)文件很可能相同,但是會(huì)使用Fabric的run函數(shù)來(lái)替代local。參見(jiàn)Fabric 文檔 獲取更多細(xì)節(jié)。

現(xiàn)在我們創(chuàng)建了fabfile.py,該怎樣實(shí)際部署呢?很簡(jiǎn)單。只需運(yùn)行:
 

$ fab prepare_deployment$ fab deploy

在技術(shù)層面,這些可以合并為一個(gè)單獨(dú)的命令,但是我覺(jué)得最好明確的準(zhǔn)備你的部署工作再部署它,因?yàn)檫@樣就使你更關(guān)注于你正在做的事情。

建立單元測(cè)試

如果你但凡聽(tīng)說(shuō)過(guò)我,可能就會(huì)知道我對(duì)自動(dòng)測(cè)試非常著迷。無(wú)論如何,有太多的Django項(xiàng)目沒(méi)有寫任何測(cè)試。這是需要預(yù)先花費(fèi)一點(diǎn)時(shí)間去做的事情,但是卻給未來(lái)帶來(lái)巨大的紅利。如果你曾經(jīng)使用print語(yǔ)句調(diào)試過(guò)你的應(yīng)用,在恰當(dāng)?shù)牡胤接煤线m的測(cè)試,這樣就將給你節(jié)省許多時(shí)間。

對(duì)于Django,Python的單元測(cè)試模塊完全夠用了。下面是一個(gè)app的一個(gè)最小的測(cè)試?yán)樱?br />  

import datetimefrom django.test import TestCasefrom myapp.models import Postclass BlogPostTestCase(TestCase):
  def setUp(self):
    Post.objects.create(id=1, 
      title='Starting a Django 1.6 Project the Right Way', 
      date=datetime.datetime.now(),
      category='Django')
    Post.objects.create(id=2, 
      title='Python\'s Hardest Problem', 
      date=datetime.datetime.now(),
      category='Python')
 
  def test_posts_have_category(self):
    """Animals that can speak are correctly identified"""
    first_post = Post.objects.get(id=1)
    second_post = Post.objects.get(id=2)
    self.assertEqual(first_post.category, 'Django')
    self.assertEqual(second_post.category, 'Python')

你可以將這些代碼寫到名為test_<appname>.py的文件中,并將其放到app測(cè)試時(shí)所在的目錄。為了為app運(yùn)行這些測(cè)試,只需運(yùn)行./manage.py test <appname>。我們創(chuàng)建的fabfile文件已經(jīng)知道在部署前運(yùn)行這些測(cè)試,所以不需要再做任何別的修改了。
享受你的新的Django應(yīng)用程序

就是這些!你已經(jīng)開(kāi)始了實(shí)際的開(kāi)發(fā)?,F(xiàn)在真正的樂(lè)趣才會(huì)開(kāi)始。只需記?。航?jīng)常提交,測(cè)試一切,還有不要在你提供服務(wù)的地方書寫代碼。無(wú)論從現(xiàn)在起會(huì)發(fā)生什么,你肯定已經(jīng)以正確的方式開(kāi)始了一個(gè)Django1.6 項(xiàng)目!

 

相關(guān)文章

  • python中copy()與deepcopy()的區(qū)別小結(jié)

    python中copy()與deepcopy()的區(qū)別小結(jié)

    接觸python有一段時(shí)間了,一直沒(méi)有系統(tǒng)的學(xué)習(xí)過(guò),也對(duì)copy,deepcoy傻傻的分不清,故抽出時(shí)間來(lái)理一下。 下面這篇文章主要給大家介紹了關(guān)于python中copy()與deepcopy()的區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2018-08-08
  • python中h5py開(kāi)源庫(kù)的使用樣例詳解

    python中h5py開(kāi)源庫(kù)的使用樣例詳解

    這篇文章主要介紹了python中的h5py開(kāi)源庫(kù)的使用,本文只是簡(jiǎn)單的對(duì)h5py庫(kù)的基本創(chuàng)建文件,數(shù)據(jù)集和讀取數(shù)據(jù)的方式進(jìn)行介紹,需要的朋友可以參考下
    2022-05-05
  • Python生成掃雷地圖的方法

    Python生成掃雷地圖的方法

    這篇文章主要為大家詳細(xì)介紹了Python生成掃雷地圖的方法,并非游戲?qū)崿F(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Python實(shí)現(xiàn)K-means聚類算法并可視化生成動(dòng)圖步驟詳解

    Python實(shí)現(xiàn)K-means聚類算法并可視化生成動(dòng)圖步驟詳解

    這篇文章主要介紹了Python實(shí)現(xiàn)K-means聚類算法并可視化生成動(dòng)圖,本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-05-05
  • python解決字典中的值是列表問(wèn)題的方法

    python解決字典中的值是列表問(wèn)題的方法

    這篇文章主要介紹了字典中的值是列表問(wèn)題,先用value連成一個(gè)str,最后用str.split()作一個(gè)轉(zhuǎn)換,生成一個(gè)列表.看了python cookbook,上面正好有一個(gè)recipe講到如何處理這樣的問(wèn)題
    2013-03-03
  • python實(shí)現(xiàn)12306搶票及自動(dòng)郵件發(fā)送提醒付款功能

    python實(shí)現(xiàn)12306搶票及自動(dòng)郵件發(fā)送提醒付款功能

    本文給大家分享python實(shí)現(xiàn)12306搶票及自動(dòng)郵件發(fā)送提醒付款功能,文章沒(méi)有給大家貼出完整代碼,只是技術(shù)交流,感興趣的朋友跟隨腳本之家小編一起看看吧
    2018-03-03
  • Python中的xlrd模塊使用原理解析

    Python中的xlrd模塊使用原理解析

    這篇文章主要介紹了Python中的xlrd模塊原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • jupyter notebook 多行輸出實(shí)例

    jupyter notebook 多行輸出實(shí)例

    這篇文章主要介紹了jupyter notebook 多行輸出實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • Python使用wxPython和PyMuPDF提取PDF頁(yè)面指定頁(yè)數(shù)的內(nèi)容

    Python使用wxPython和PyMuPDF提取PDF頁(yè)面指定頁(yè)數(shù)的內(nèi)容

    在本篇博客中,我們將探討如何使用wxPython和PyMuPDF庫(kù)創(chuàng)建一個(gè)簡(jiǎn)單的Bokeh應(yīng)用程序,用于選擇PDF文件并提取指定頁(yè)面的內(nèi)容,并將提取的內(nèi)容顯示在文本框中,需要的朋友可以參考下
    2023-08-08
  • Python如何使用ConfigParser讀取配置文件

    Python如何使用ConfigParser讀取配置文件

    這篇文章主要介紹了Python如何使用ConfigParser讀取配置文件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11

最新評(píng)論

天水市| 西乌珠穆沁旗| 榕江县| 遂昌县| 清河县| 乌海市| 城市| 杭锦旗| 佳木斯市| 云林县| 滦南县| 贺兰县| 化隆| 左贡县| 荃湾区| 师宗县| 翁源县| 同心县| 枣庄市| 左贡县| 南漳县| 阿坝县| 河曲县| 大兴区| 五华县| 莒南县| 永德县| 乾安县| 广灵县| 昌邑市| 延长县| 上蔡县| 启东市| 临沭县| 江孜县| 乌兰察布市| 隆回县| 尼玛县| 临澧县| 沂源县| 枣庄市|