91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

分享一些python Django在開發中的使用經驗

發布時間:2021-01-25 10:05:53 來源:億速云 閱讀:350 作者:小新 欄目:web開發

這篇文章將為大家詳細講解有關分享一些python Django在開發中的使用經驗,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

大三的時候第一次接觸 Django,從真正使用 Django 做項目到現在也快 4 年了。最喜歡的其實還是 Django 的 ORM 框架。公司的項目都是前后分離的,使用 Django 做后端接口開發還是很高效的。

特此總結一些 Django 開發的小經驗。先說一些最最基礎的吧。

使用 virtualenv 隔離開發環境

使用 pip 管理項目依賴,主要就是一個小技巧,使用 pip freeze > requirements.txt 來保存依賴的模塊和版本

使用 gitignore.io 這個網站提供的 .gitignore 文件管理代碼庫文件

打包和發布

項目的打包和發布用的 Docker,Django 項目的 Dockerfile 特別簡單:

FROM python:3.5
COPY ./requirements.txt /src
WORKDIR /src
RUN pip install -r requirements.txt
COPY . /src
EXPOSE
CMD uwsgi --http :--wsgi-file<path/to/wsgi.py>

這一個 Dockerfile 模板可以通吃 80% 的 Django 項目了。

日志配置

既然用 Docker,就放棄了把日志寫入文件,直接寫到標準輸出。

   # settings.py 
# ...
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format': '[application] %(levelname)s %(asctime)s %(module)s %(message)s'
        }
    },
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'stream': sys.stdout,
            'formatter': 'verbose'
        },
    },
    'loggers': {
        'app': {
            'handlers': ['console'],
            'level': 'DEBUG',
            'propagate': True,
        },
    },
}

新版本的 uwsgi 已經可以把 webapp 的日志收集起來輸出到標準輸出里面了。如果需要收集、管理日志的話,就是用 Docker 日志收集工具,直接收集 Docker 容器的日志即可。

自動化測試

既然是純后端項目,工程師完全可以通過自動化測試來檢測自己的代碼。Django 本身對測試提供了很好的支持,可以通過 sqlite 來搭建測試數據庫,還有基于內存的緩存,做測試不會增加對其他系統的依賴。開發起來事半功倍。

除了要寫自動化測試代碼,還要能統計測試覆蓋率。目前我們用的是 coverage.py 這個工具,說實話沒有 node.js 的 istanbul 好用,輸出的報告沒有 Istanbul 詳細和易讀。不過用來檢查 “死代碼” 還是夠用的。

針對 http 代碼的測試

有些項目需要對接的第三方系統比較多,比如微信認證、支付、短信等常見的,可能還有其他一些垂直業務領域的系統。這部分接口對接的代碼,也應該納入到測試當中,畢竟 Python 作為腳本語言,代碼很容易出現錯誤。

這塊一般是用 responses 這個模塊來 mock http 請求。

定時任務

有一些 Django 項目需要做一些定時任務。首先,絕對不用 linux 內置的 crontab。主要的問題還是維護的成本高,沒準哪天就把這個配置給忘了。

我們現在方式都是借助 Django Command 的功能,將定時任務封裝成一個 command。在這個 command 里面運行一個 scheduler。就像下面這樣:

import schedule
from django.core.management.base import BaseCommand
class Command(BaseCommand):
    def handle(self, *args, **kwargs):
        schedule.every(45).minutes.do(do_this)
        schedule.every().day.at('04:00').do(do_that)
        while True:
            schedule.run_pending()
            time.sleep(1)

關于“分享一些python Django在開發中的使用經驗”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阳西县| 佛坪县| 岐山县| 临湘市| 临洮县| 彭州市| 利津县| 昌江| 永兴县| 邵武市| 乌兰察布市| 犍为县| 武平县| 若尔盖县| 兴安盟| 虞城县| 湟源县| 安吉县| 苍梧县| 长子县| 和龙市| 陆河县| 东莞市| 平武县| 合川市| 安阳市| 应城市| 如皋市| 伊金霍洛旗| 行唐县| 新竹市| 苍梧县| 上杭县| 庆城县| 会昌县| 普兰店市| 沙雅县| 社旗县| 微博| 淅川县| 黔江区|