簡體   English   中英

如何與hangfire后台作業一起使用?

[英]How to use await with hangfire background job?

我正在使用.net core 2.1的hangfire。 現在的問題是我正在使用httpclient發出多個Web請求,而hangfire不支持我認為的異步方法。 因此,響應將在所有Web請求完成之前返回。 我評論了這一行:

_backgroundJob.Enqueue(() => EnqueueMyMethodCallBack(email)); 

並使用此行:

await EnqueueMyMethodCallBack(email)

然后工作正常。 那么有什么方法可以等待_backgroundJob.Enqueue? 我也發現了這篇文章https://www.hangfire.io/blog/2016/07/16/hangfire-1.6.0.html ,其中寫道,現在支持異步方法,但我仍然不能使用它們。

和EnqueueMyMethodCallBack方法:

public async Task<bool> EnqueueMyMethodCallBack(string email)
{
  var response = await _userRepo.GetUser(email);
  if(response == null)
    return false;
  var template = await _template.GetTemplate();
  await _email.Send(template, email);
  return true; 
}

有什么幫助嗎?

Enqueue只是增加了作業隊列。 以后在不同的上下文中甚至在可能不同的計算機上執行作業(hangfire支持多台工作計算機)。 它返回作業ID,以便您稍后查詢(檢查狀態等)。

如果您希望您的作業在這種情況下運行,請直接調用它。

因此,如果請求需要從該作業中返回某些內容,則不需要任何作業。 安排作業並等待其完成沒有任何意義,因此您可以退貨。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM