日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python应用体系_python-大型django应用程序体系结构

發布時間:2025/3/15 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python应用体系_python-大型django应用程序体系结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如何適當地構建一個較大的Django網站,以保持可測試性和可維護性?

本著最好的django精神(我希望),我們開始時不太關心網站不同部分之間的去耦.我們確實將其分為不同的應用程序,但是通過共同使用模型類和直接方法調用,它們直接相互依賴.

這變得越來越糾結.例如,我們的一項操作/服務如下所示:

def do_apply_for_flat(user, flat, bid_amount):

assert can_apply(user, flat)

application = Application.objects.create(

user=user, flat=flat, amount=bid_amount,

status=Application.STATUS_ACTIVE)

events.logger.application_added(application)

mails.send_applicant_application_added(application)

mails.send_lessor_application_received(application)

return application

該功能不僅執行實際的業務流程,不執行功能,它還處理事件記錄并向相關用戶發送郵件.我認為這種方法沒有內在的錯誤.但是,正確地推理代碼甚至測試應用程序變得越來越困難,因為從知識和程序上分離各個部分變得越來越困難.

因此,我的問題是,大男孩如何構建應用程序,使得:

>可以隔離測試應用程序的不同部分

>通過僅啟用特定測試確實需要的零件,測試可以保持快速

>減少代碼耦合

我對這個問題的看法是引入一個集中的信號中心(單個python文件中只是一堆django信號),單個django應用可以發布或訂閱.上面的示例函數將發布一個application_added事件,郵件和事件應用程序將監聽該事件.然后,為了進行有效的測試,我將斷開不需要的部分.這也大大增加了解耦,因為服務根本不需要知道發送郵件.

但是,我不確定,因此對這些問題的公認做法非常感興趣.

解決方法:

將應用程序的某些部分轉移到不同的微服務.這將使您的應用程序的某些部分專注于正確執行一兩項操作(例如,事件記錄,電子郵件).代碼耦合也減少了,站點的不同部分也可以單獨進行測試.

The microservice architecture style involves developing a single application as a collection of smaller services that communicates usually via an API.

您可能需要使用類似Flask的較小框架.

資源:

有關微服務的更多信息,請單擊此處:

標簽:python,django

總結

以上是生活随笔為你收集整理的python应用体系_python-大型django应用程序体系结构的全部內容,希望文章能夠幫你解決所遇到的問題。

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