后端如何處理異步作業


1,后端與 job 作業是完全分離的,中間是用 rebbitmq 進行通信的!也就是說,后端對作業操作只需要發送消息到rebbitmq服務器即可!是由於 job 的完成是耗時的過程!所以采用消息隊列來完成異步的處理!
2,當 rebbitmq 服務端發送消息,客戶端會進行監聽得到消息,采用多線程進行處理,一是job 具體操作處理,一是進行作業的狀態進行定時查詢處理(死循環)
3,對讀寫操作采用線程鎖的方式,在此處(開啟新的進程)是代碼來執行腳本,運行狀態和錯誤存儲到本地文件之中,所以要頻繁的讀寫。線程里開啟進程操作slurm命令行!
4,由於job是耗時的操作,也是狀態更改頻繁的,因此要時刻的更新數據狀態!
5,webhooks 得到的數據是通過rebbitmq 頻繁發送的數據,要進行處理,如果和上一個狀態不一樣,說明狀態改變!
6,數據庫的插入操作是通過后端進行處理的,此時的狀態肯定會隨着job進行更改的。
7,一直進行輪訓查詢狀態,是為了保證狀態是最新的狀態,job 在運行之后不能保證由於自身的原因導致死機,但是數據庫還是創建job時的狀態,因此需要一直不斷的監控並且更新狀態。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM