Django項目設計(項目從需求分析到上線整個流程記錄)

Django部署遇到的問題:

nginx+gunicorn 

nginx修改配置文件監聽端口

主要是修改監聽端口和域名

 

gunicorn

ls1@bbdm-lab:~/web_new$ gunicorn -w 4 -t 3600 --bind unix:/tmp/bbdm.hzau.edu.cn.socket web_project.wsgi:application

 

screen  -ls  //查看進程

screen -r  web   //進入進程

遇到問題

當你掛起screen,下次想重新連上screen時,有時會出現screen session的狀態爲Attached但是卻連不上的情況,比如我想重新進入session id 爲18352的screen,運行‘screen -r 18352’,提示“There is no screen to be resumed matching 18352”,解決方法如下:

screen -ls // 列出狀態爲Attached的session id

screen -D  -r <session-id>

//進入screen之後按住CTRL + a + d 就可以退出進程

解釋:-D -r 先刪除前一用戶再登陸。

 

 

 

下面是我的項目參賽文檔

目前生物信息方面的研究是很熱門的內容,其中研究識別和預測lncRNAs的生物信息學方法是一個熱點內容,雖然目前許多的lncRNAs預測工具提供web應用,但其中很多的web應用已關閉,而很多預測工具包其所使用的開發語言不同,所需的各種環境也不同,研究人員在對多種方法結果對比時配置環境和調用接口極不方便。針對當前lncRNAs預測工具分散、沒有集中管理、運行環境各不相同的情況,且加上目前還沒有一個全面的預測lncRNAs的平臺,因此我們想到提供一個統一、完整的web平臺供相關生物信息研究人員預測未知RNA使用。

目前平臺整合了目前科學界常用的以及最新的識別並預測lncRNAs的方法,提供了一個完整、統一的web平臺和軟件包供研究人員對未知RNA進行預測使用,可大幅提高研究人員的工作效率。我們的平臺提供了9個lncRNAs預測軟件(longdist、CPAT、CPC2、CPPred、PLEK、CNCI、lgc、LncADeep、FEElnc),均可實現正常使用。用戶在進入頁面後,可以查看相關的背景知識和每個軟件的註釋(包括論文出處和輸出樣式)。在預測界面,用戶可選擇相應模型,加載自己的fasta格式文件進行預測,之後系統提示用戶輸入郵箱地址,郵箱地址輸入後不久我們會將結果發送至對應的郵箱。

網站前端採用的bootstrap框架。網站後端採用的基於python語言的django框架。前後端使用了ajax來進行交互。測試在電腦中完成之後,需要一個可持續穩定的服務器進行web的部署,這裏採用nginx+gunicorn的方式進行部署。將nginx作爲服務器最前端,接收web的請求,統一管理請求。nginx把所有靜態請求自己來處理。然後,nginx將所有非靜態請求通過gunicorn傳遞給Django,由Django來進行處理,從而完成一次完整的web訪問。

 

圖1 技術路線                   圖2 系統流程圖

 

 

界面設計:網站前端採用的bootstrap框架,它基於html css JavaScript的前端開發框架,並且在jQuery的基礎上進行了改進和完善,實現響應式佈局並且完成手機電腦的自適應.在製作過程中參考了一些現有的科研工具網站,充分體現了簡潔大方的設計理念。簡單實用是該項目最大的特點。

 

 

關鍵技術:(重點難點)

1.頁面靜態化以及前後端分離

頁面靜態化的主要目的是爲了加快頁面的加載速度。做法:將信息詳情頁面做成靜態HTML,放在CDN(減少了服務端的壓力,主要用的百度的cdn)上做爲靜態數據發送給用戶端,而數據信息通過前端ajax 異步發送請求來獲取。只獲取動態數據信息部分,加載速度可以達到全部渲染的2倍。

2.預測工具的收集

LncRnas的預測工具來源於各篇論文,目前許多的lncRNAs預測工具部分提供了web應用,但其中很多的web應用已關閉。同時其他大量的lncRNAs預測工具基於軟件包的形式分散,其所使用的開發語言不同,所需的各種環境也不同,研究人員在對多種方法結果對比時配置環境和調用接口極不方便。針對當前lncRNAs預測工具分散、沒有集中管理、運行環境各不相同的情況,一個整合的、全面的預測lncRNAs的平臺是十分必要的,會極大地提高研究人員的研究效率。

3.系統性能提升(併發和響應時間)

併發量是一個比較大的問題。當同時有很多個用戶訪問並提交測試請求時,因爲服務器的資源有限,而服務器在運行預測工具時就會佔用很多資源,因此不可能同時運行大量的測試請求,所以設置了一個消息隊列,同時設置了4個gunicorn線程,各自監聽自身的訪問請求,並且設置線程自動結束的等待時間爲1小時,防止程序卡死。

4.多軟件部署

    許多lncRNAs的預測工具的安裝部署基於不同的環境依賴,需要各自配置不同的運行環境來能分別使其正常運行,同時要保持各工具獨立完整運行,保持結果的穩定性。

 

主要測試:

作品效果圖及測試過程

 

圖一 網頁預測界面

 

圖二 預測模型選擇

 

圖三 輸入郵箱地址

 

 

圖四 成功信息提示

 

圖四 順利收到郵件

 

圖五 郵箱內預測結果

 

 

運行速度:

前臺動態頁面響應時間<1秒,生成靜態頁面響應時間<20毫秒

測試報告等待時間依賴於服務器中的預測工具所運行的時間這個時間優化取決於工具本身。

 

兼容性:

支持多瀏覽器,手機電腦平板多平臺均可使用

 

安全性:

1.信息泄露:本網站不採用登陸模式,所獲取的信息只有個人郵箱和fasta文件,並且系統會定期清理緩存,因此不存在個人信息泄露的問題。

2.輸入字符:由於網站是作爲工具進行使用的,所以不按規定的輸入後臺無法識別文件就會中止運行,無法得到結果,也不會佔據系統資源。

3.上傳文件:文件類型未進行限制,但不按照規定文件格式上傳文件無法得到結果郵件,系統終止文件的處理。

 

部署方便性

Django項目部署在服務器上採用nginx+gunicorn組合的方式,方便遷移,但項目採用調用系統指令的方式使用預測工具,預測工具在服務器中的部署是比較麻煩的。

 

可用性:

通過主頁中的簡介和文字說明,該web工具的使用難度非常小,容易上手。

 

 

web平臺,無需安裝,瀏覽器登陸http://bbdm.hzau.edu.cn即可使用

項目協調:項目分爲兩個大部分,分別是預測工具的部署,和web網站的開發,我們分成兩個部分進行開發,一人負責一個方面的問題,就可以各司其職的進行程序的處理。

水平提升:通過此次的項目,系統的學習了django網站從實現到上線的整個流程。並且在預測工具的使用中學會了相關的生物信息學和機器學習知識,尤其是對於序列類數據的清洗、篩選、整合的處理流程,還有機器學習模型的具體運行機制,都加深了理解並投入了實踐。在本次項目中,我們還鍛鍊了文獻的閱讀能力和整合能力,可以快速將以往論文中的觀點提取出,分析方法的可行性及提升空間,從而整合出我們自己的方法,在這方面我們受益匪淺。

後續升級:

1.繼續調研不斷地加入新的lncRNAs預測工具

2.完善用戶體驗,加入更多信息提示

3.進一步擴展網站功能,加入更多相關功能模塊

因爲文檔中的圖片出現一定的問題,所以沒能複製過來。文檔在下面的連接中,可以下載看看。


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章