Как полностью остановить локальный запуск функции Azure? Функция Azure [Python V2] продолжает предыдущее выполнение при перезапуске отладчика [VS Code]?

Я запускаю устойчивую функцию Azure, запускаемую по HTTP, со вложенной структурой оркестратора. Одно выполнение функции может выполняться несколько часов и выполнять сотни операций с базой данных.

Во время разработки и тестирования я запускаю эту функцию локально в своем VS Code [MacOS] в режиме отладки. Чтобы остановить запуск процесса, я просто нажимаю Ctrl + C, чтобы завершить процесс.

Проблема: когда я перезапускаю отладчик, функция продолжает работу с того места, где остановилась, и выполняет чрезвычайно длительные процессы. Я не могу понять, как полностью остановить ранее запущенные процессы. Я могу сказать, что они работают, по журналам, которые я вижу в своем терминале.

При запуске функции, запускаемой HTTP, я получаю "statusQueryGetUri" и "terminatePostUri", которые я обычно использую для остановки функции, однако я понятия не имею, какое выполнение выполняется в данный момент, и не знаю, как я могу получить идентификатор, который позволил бы мне для завершения цикла, который все еще активен.

Вот как выглядит мой файл 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
ОС: Дарвин Arm64 23.3.0

Я пытался:

  • перезагрузите мой VS Code и мой компьютер.
  • искал любое локально сохраненное состояние, но не смог найти никаких файлов.
  • попытался завершить процесс через терминал ps aux | grep python, затем kill -9 ID

Я ожидаю:
Я ожидаю запустить отладчик и увидеть, что моя функция Azure простаивает, пока я не запущу триггер HTTP через почтальона. Затем, когда я запускаю функцию, но снова останавливаю ее, убивая терминал или процесс, я ожидаю, что она не продолжится при следующем запуске отладчика.

Проверьте, помогает ли приведенное ниже решение @Julian.

Pravallika KV 22.07.2024 14:02
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
93
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
  1. Чтобы остановить устойчивые функции Azure, вы можете использовать terminatePostUri своей функции.

Вы можете получить InstanceID функции из terminPostUri.

http://localhost:7071/runtime/webhooks/durabletask/instances/<Instance_ID>/terminate?reason = {text}&taskHub=TestHubName&connection=Storage&code=rzKXAu_HfN3-JqjaYvOzZon5ACBt8Ew7lVvou6zQNMjDAzFuFAtHMw==

  • Запустите terminatePostUri, обновив причину в URI, он остановит выполнение функции с помощью команды:
func durable terminate --id <Instance_ID> --reason <reason to terminate>
  1. Отключите отладчик, чтобы остановить функцию на панели отладки.

  2. Чтобы полностью остановить локально запущенную функцию Azure, вам следует остановить процесс, который запускает функцию, в Мониторе активности в macOS.

  • Перейдите в Приложения => Утилиты => Запустить монитор активности.
  • Выберите запущенный процесс => Выйти/Принудительно выйти.
  • Как только процесс будет остановлен, все запущенные экземпляры функции будут прекращены.
  1. Отладьте функцию с помощью основных инструментов функции func host start --debug и используйте Ctrl+C, чтобы остановить выполнение функции:

Использованная литература:

Полная остановка локального выполнения функции Azure: функция Azure (Python V2) продолжает предыдущее выполнение. Перезапускаем отладчик в VSCode? (trycatchdebug.net)

Другие вопросы по теме

Код ошибки MSB4062 в проекте функции Azure в VS для запуска API Microsoft Graph с функциями Azure
Получение исключения «Невозможно динамически создать экземпляр типа Microsoft.Azure.Functions.Worker.Http.HttpRequestData». в функции Azure
Приложению функции Azure Python не удается импортировать пакеты при развертывании через Azure DevOps
Azure Blob: как автоматизировать преобразование архивного хранилища Azure в холодный/горячий уровень, отправить ссылку для загрузки, как только она станет доступна, и повторно заархивировать через 72 часа?
Код ошибки CS:0021 в проекте функции Azure в VS для запуска API Microsoft Graph с функциями Azure
Функция Azure работает локально, но не в Azure
Функции Azure: задание не найдено (Python)
Вход FastAPI в маршруты в функциях Azure
Невозможно найти версию dotnet при развертывании приложения функции гибкого потребления с помощью действий GitHub
Исключение: AttributeError: Anonymous при запуске приложения с базовой функцией

Похожие вопросы

ОШИБКА: не удалось создать устанавливаемые колеса для некоторых проектов на основе pyproject.toml (pycryptodome)
Как я могу установить все поля формы только для чтения в Odoo 16 в зависимости от поля?
Невозможно загрузить пакет PIP в реестр артефактов Google с помощью шпагата, ошибка: KeyError: «лицензия»
При установке Tkinter каким-то образом устанавливается другой модуль
Регулярное выражение для замены следующих двух слов после точки совпадения
Как перечислить потоки с помощью типов CreateToolhelp32Snapshot и Python?
Django django.contrib.messages добавляет новые постоянные сообщения. ВНИМАНИЕ
Почему я получаю ошибку рекурсии, если глубина ожидаемой рекурсии должна быть меньше 999?
Когда я использую модель langchainchatopenai и вызываю метод, он работает, но при использовании в Creupai тех же моделей llm он дает неверный ключ API
Минимизируйте повторы, удалив все вхождения одного числа