我正在运行具有嵌套协调器结构的 HTTP 触发的 Azure 持久功能。该函数的单次执行可以运行多个小时并进行数百次数据库操作。
在开发和测试期间,我在 VS Code [MacOS] 中以调试模式本地运行该函数。为了停止该进程运行,我只需按 Ctrl + C 即可终止该进程。
问题:当我重新启动调试器时,该函数会从中断处继续执行并执行运行时间极长的进程。我无法弄清楚如何完全停止以前启动的进程。我可以通过我在终端中看到的日志判断它们正在运行。
启动 HTTP 触发函数时,我得到
"statusQueryGetUri"
和 "terminatePostUri"
,我通常用它们来停止该函数,但是我不知道当前正在运行哪个执行,也不知道如何检索ID 允许我终止仍处于活动状态的运行。
这就是我的 launch.json 文件的样子:
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach to Python Functions",
"type": "python",
"request": "attach",
"port": 9091,
"preLaunchTask": "func: host start"
}
]
}
我的函数已连接到我的开发数据库和开发 Blob 存储。
azure-functions==1.17.0
azure-functions-durable==1.2.6
VS代码:版本:1.90.2
操作系统:Darwin arm64 23.3.0
我试过:
ps aux | grep python
然后kill -9 ID
我期待着:
我希望启动我的调试器并看到我的 azure 函数空闲,直到我通过邮递员启动 HTTP 触发器。然后,当我运行一个函数但通过终止终端或进程来再次停止它时,我希望下次再次启动调试器时它不会继续。
terminatePostUri
。您可以从terminatePostUri获取函数的InstanceID。
http://localhost:7071/runtime/webhooks/durabletask/instances/<Instance_ID>/terminate?reason={text}&taskHub=TestHubName&connection=Storage&code=rzKXAu_HfN3-JqjaYvOzZon5ACBt8Ew7lVvou6zQNMjDAzFuFAtHMw==
terminatePostUri
,它使用以下命令停止函数执行:func durable terminate --id <Instance_ID> --reason <reason to terminate>
断开调试器以停止调试栏中的功能。
要完全停止本地运行的 Azure Function,您应该在 macOS 上的 Activity Monitor 中停止正在运行该函数的进程。
func host start --debug
调试函数并使用Ctrl+C
停止运行函数:参考资料:
完全停止本地运行的 Azure Function:Azure Function (Python V2) 继续执行先前的执行 在 VSCode 中重新启动调试器? (trycatchdebug.net)