乙個非同步任務的梳理

2022-03-09 13:39:01 字數 1399 閱讀 5227

開篇語略;

下圖來引出話題:

場景:

個人使用者投遞簡歷,由於繁多的業務邏輯判斷和資料庫的不斷讀取(這裡就不用多說了吧),當個人使用者單個/批量投遞簡歷的時候,點選投遞按鈕之後會很長一段時間等待返回結果。

需求:

提公升使用者體驗,解決點選投遞按鈕之後的漫長等待,給人一種流暢感,當然不能去掉哪些業務邏輯判斷。。

設計:

將投遞簡歷的資料先存放到記憶體中(不需要參雜任何業務邏輯判斷,單純的儲存起來),直接返回投遞提示。

做乙個獨立的投遞簡歷方法,把複雜耗時的操作放到這個方法中,然後操作儲存起來的資料。

用非同步的方法執行後台任務來呼叫此方法,執行簡歷的投遞入庫。

實現:(這裡簡單了解一下用到的方法

資料的儲存:queue(佇列)

system.collections.queue類表示物件的先進先出集合,儲存在 queue 中的物件在一端插入,從另一端移除。

queue能對集合進行順序處理(先進先出),能接受null值,並且允許重複的元素.

先行參考:

非同步的執行:task(任務)

task 跟執行緒不是一對一的關係,有點類似執行緒池,但 task 相比執行緒池有很小的開銷和精確的控制。

強烈推薦:

封裝好的task方法:

測試**:

///

///投遞簡歷

///public

class

postresumequeue-"

, resumeid, infoid));

}//////

非同步執行任務 投遞簡歷

/// ///

public

static

void

postresumetodbasync()

//////

投遞簡歷入庫

/// ///

public

static

void

postresumetodb()

} }

}

簡單的梳理一下 有什麼好的建議或意見都可以提出來! 哇哈哈…

梳理乙個產品的步驟

作為乙個平台 專案 負責人,必須要做到對產品有把控力,沒有人比你更熟悉它。列舉平台有幾個應用,包括未來的半到一年要做的應用。能夠明確每乙個產品是幹什麼的,解決什麼問題的!梳理出每乙個應用的主流程,並畫出來,能夠快速描述出來。梳理出每乙個應用的核心名詞,每乙個應用都會有比較內聚的名詞,如果是舊的系統基...

通過celery非同步處理以乙個查詢任務

今天介紹通過celery實現乙個非同步任務。有這樣乙個需求,前端發起乙個查詢的請求,但是發起查詢後,查詢可能不會立即返回結果。這時候,發起查詢後,後端可以把這次查詢當作乙個task,並立即返回乙個能唯一表明該task的值,如taskid 使用者後面可以通過這個taskid 隨時檢視結果 使用者收到這...

掛起乙個任務

掛起乙個任務 描述 呼叫此函式去掛起乙個任務,如果傳送到ostasksuspend 的任務的優先順序是要掛起的任務或者是 os prio self,那麼這個任務將被掛起。引數 prio 需要掛起任務的優先順序。如果指定os prio self,那麼這個任務將自己掛起,再發生再 次排程。返回 os n...