我需要运行一个很长的网络抓取脚本(大约需要一个小时才能完成),但问题是 Azure Functions 一段时间后超时。在虚拟机上运行脚本是否更好?为了保持 Azure Function 运行,我要么需要高级应用服务计划,要么将代码模块化为单独的函数。不确定哪一个更有效、更经济、更适合未来维护。
实际上,我觉得你有几个选择:
您可以使用持久函数,持久函数提供了对此模式的内置支持,简化甚至删除了与长时间运行的函数执行交互所需编写的代码。例如,Durable Functions 快速入门示例(C#、JavaScript、TypeScript、Python、PowerShell 和 Java)显示了一个简单的 REST 命令,您可以使用该命令启动新的 Orchestrator 函数实例。实例启动后,扩展会公开查询 Orchestrator 功能状态的 Webhook HTTP API。
只需在任何搜索引擎中搜索长期运行的持久性,您就可以找到对此进行详细说明的文档。(我推荐)
当然,您也可以使用网络作业,这通常用于持久运行的长时间执行。
使用普通的网络应用程序进行抓取,只需确保您始终处于启用状态!!
你也可以去虚拟机,但那不在我的区域内。我认为都有优点和缺点,实际耐用或网络作业在成本和设置方面最有意义。