对不起论文……
我有一个使用WebJobs SDK的Continuous WebJob。它具有一个“检查工作”的TimerTrigger函数。该作业将任务排队等待QueueTrigger函数。最初,我注意到QueueTrigger的问题。作业将排队,然后几乎立即获得“未完成”状态。有趣的是,至少在某些情况下,它们似乎仍在运行,如果我等待,它们最终将从“未完成”变为“成功”。
错误的状态很容易引起误解,使开发和管理变得困难。
现在,我确定可以为QueueTrigger解决此问题。它利用了异步,但这应该不成问题,因为我在WhileAll()上有一个Wait(),并且在本地运行得很好。但是,它并非“一路异步”,因此我怀疑异步线程的周期性休眠可能导致“永不完成”状态。我将代码更新为“一直异步”,直到QueueTrigger函数本身为止。看来已经解决了!
现在,TimerTrigger作业仍然存在问题。如果运行时间超过几百毫秒,它将获得“未完成”状态。问题是,它根本不使用异步!在该函数下甚至没有使用异步的理论代码路径。因此,将其转换为异步是没有意义的。
即使异步代码完全与该代码隔离,是否有可能仅在项目中其他位置出现异步代码呢?