【发布时间】:2020-04-02 15:09:02
【问题描述】:
我有一个带有 HttpTrigger 的 Azure 函数。
我想立即返回 202 Accepted 给调用者,然后实际处理调用,大约需要一秒钟。
是否有一些最佳实践方法可以做到这一点?
我不想在回电话之前做任何事情,所以首先调用 EventGrid 或类似的方法是不可能的。
被拒绝的选项
调用 EventGrid
通过调用 EventGrid,我可以在 EventGrid 调用完成后立即返回,实际处理可以在另一个订阅事件的函数中进行。我不希望这样做,因为调用 EventGrid 需要时间,并且它确实会不时失败或花费比正常时间更长的时间。
加入队列
通过将消息添加到队列中,我可以完成与使用 EventGrid 相同的操作,并且它也存在与上述相同的问题。
调用不带'await'的函数
我知道通过在我的函数内部调用一个方法而不等待,它不会等待响应,我将能够立即返回。但是,我的测试表明这是非常不现实的,但如果您认为这是可行的方法以及原因,请告诉我。
自定义线程
我可以使用 Thread 和 ThreadStart 等手动进行此操作,我想如果需要,我可能会这样做,但我问这个问题是为了寻找更好的解决方案。
【问题讨论】:
-
您的 HttpTrigger 多久被调用一次?
-
我已经使用 ThreadPool.QueueUserWorkerItemCloudEvents v1.0 处理了 AEG 端点验证的相同情况/b>。请注意,此解决方案适用于运行时间很短的后台任务。
-
@RomanKiss 抱歉回复晚了。假设它每秒被调用 5 次。
标签: azure-functions