繁体   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