我们托管了一个azure应用程序,并通过为每个组织创建一个单独的数据库为多个组织启用。现在,我们需要运行需要生成的后台服务:
在启用TimerTrigger的情况下配置Azure功能(运行时间将由管理应用程序中的每个组织配置)
应根据组织配置的时间多次调用Azure函数(相同的函数将被称为多个实例)
每个组织的功能计划时间应按需更新(通过c#代码) - 我不确定是否可以这样做
根据时间和组织细节,函数需要从相应的数据库中提取记录并进行处理。
最小化函数超时问题 - 记录将作为批处理进行处理,并在相应的组织数据库中进行更新。
让我们了解您的输入
谢谢!
答案 0 :(得分:1)
功能无意长时间运行。如果您有许多租户和/或报告生成缓慢,则可以终止函数调用(默认情况下为5分钟后)。
如果您需要通过计时器运行较长的作业,则Web作业可以更好地匹配。
如果我要使用函数,我会略微区别:
定时器触发函数每天运行(或无论频率如何),并将每个租户发送一条消息发送到队列,说“请为租户X生成报告”。它运行得非常快。
另一个队列触发的函数侦听该队列,获取消息并为租户X的每条消息生成一个报告。
通过这种方式,您可以更均匀地分配工作,还可以隔离可能的故障,并可能并行生成多个报告。
您可能还想查看可以实现类似工作流程的Durable Functions:生成单个报告的活动功能,以及为每个租户调用它的协调器功能。