国产精品免费嫩草研究院|无遮羞动漫在线观看AV|国产麻豆精品传媒AV国产在线|村在线观看|寂寞情人1正版|韩国床震韩国床震古|精品系列专区久久

Asp-Net-Core開發筆記:集成Hangfire實現異步任務隊列和定時任務( 三 )


public class CrawlService {// 依賴注入一些服務private readonly IBaseRepository<Proc> _repo;public async Task CrawlAllProc() {for(var i=1; i<2000; i++) {// await CrawlProcList(i);BackgroundJob.Enqueue(() => CrawlProcList(i, 100));}}public async Task CrawlProcList(int page, int pageSize = 100) {// 具體代碼省略了var procList = ; //...foreach (var proc in procList) {// await CrawlProc(proc);BackgroundJob.Enqueue(() => CrawlProc(proc));}}public async Task CrawlProc(Proc proc) { }}把原來 await 的地方注釋掉,換成用 Hangfire 創建異步任務,運行起來,打開dashboard,可以看到任務噌的一下就上到幾千,速度極快~

需要注意的就是 CrawlProcList 方法的第二個參數 pageSize 我們給了默認值100,在正常使用是沒問題的,可以不傳入這個參數,默認就是100 。
BackgroundJob.Enqueue 方法里不能省略這個參數,不然會報錯說編譯器無法解析啥的,這個應該是C#的語言限制,具體我暫時還沒去深入研究 。
小結OK,這樣就初步搞定了數據采集 & 定時采集的功能,這部分剛好是我國慶第一天加班完成的,后續的就交給時間吧~ 國慶剩下幾天的假期讓它跑個夠,等假期結束再回去看看效果如何,到時有新的進展我也會及時更新博客 。
對了,我還打算封裝個異步任務和定時任務的接口(似乎 AspNetCore 沒有這部分功能?),因為我不想代碼和 Hangfire 有太高的耦合,封裝成抽象的接口,以后如果換別的組件也沒有壓力 。
就把這件事先加入 todo list 吧~
參考資料
  • https://docs.hangfire.io/en/latest/index.html
  • https://codewithmukesh.com/blog/hangfire-in-aspnet-core-3-1/
  • https://github.com/gonzigonz/HangfireCore-Example
【Asp-Net-Core開發筆記:集成Hangfire實現異步任務隊列和定時任務】

經驗總結擴展閱讀