Поделиться через


Быстрый старт: Создание приложения Python Durable Functions

Используйте Durable Functions, функцию Azure Functions для записи функций с отслеживанием состояния в бессерверной среде. Установите Durable Functions путем установки расширения Azure Functions в Visual Studio Code. Расширение управляет состоянием, контрольными точками и перезапусками в вашем приложении.

В этом кратком руководстве вы используете расширение Durable Functions для Visual Studio Code, чтобы локально создать и протестировать приложение Durable Functions типа 'Hello, World' в Azure Functions. Приложение Durable Functions организует оркестровку и связывает вызовы других функций. Затем вы публикуете код функции в Azure. Используемые средства доступны через расширение Visual Studio Code.

Скриншот запущенного приложения Durable Functions в Azure.

Примечание.

В этом кратком руководстве используется модель программирования на основе декоратора v2 для Python. Эта модель дает более простую структуру файлов и более ориентирована на код по сравнению с версией 1.

Предварительные требования

Для завершения этого краткого руководства вам понадобится:

  • установлен Visual Studio Code.

  • Расширение Visual Studio Code Azure Functions установлено.

  • Установлена последняя версия Azure Functions Core Tools.

  • Средство тестирования HTTP, которое обеспечивает безопасность данных. Дополнительные сведения см. в статье Инструменты тестирования HTTP.

  • Подписка Azure для развертывания приложения в Azure.

  • Установлены Python версии 3.7, 3.8, 3.9 или 3.10.

Если у вас нет учетной записи Azure, создайте учетную запись free перед началом работы.

Создание локального проекта

В этом разделе вы используете Visual Studio Code для создания локального проекта Azure Functions.

  1. В Visual Studio Code выберите F1 (или нажмите клавиши CTRL/CMD+SHIFT+P), чтобы открыть палитру команд. В командной строке (>) введите и выберите Azure Functions: создание нового проекта.

    Снимок экрана с окном создания функции.

  2. Нажмите кнопку "Обзор". В диалоговом окне "Выбор папки" перейдите в папку, используемую для проекта, и нажмите кнопку "Выбрать".

  3. В подсказках укажите следующие сведения:

    Подсказка Действие Описание
    Выбор языка для проекта приложения-функции Выберите Python. Создает локальный проект функций Python.
    Выбор версии Выберите Azure Functions версии 4. Этот параметр отображается только в том случае, если основные инструменты еще не установлены. В этом случае Core Tools устанавливается при первом запуске приложения.
    версия Python Выберите Python 3.7, Python 3.8, Python 3.9 или Python 3.10. Visual Studio Code создает виртуальную среду с помощью выбранной версии.
    Выбор шаблона для первой функции проекта выберите Пока пропустить.
    Выбор способа открытия проекта Выберите "Открыть" в текущем окне. Открывает Visual Studio Code в выбранной папке.

Visual Studio Code устанавливает Azure Functions Core Tools, если требуется создать проект. Также создаётся проект функционального приложения в папке. Проект будет содержать файлы конфигурации host.json и local.settings.json.

В корневой папке также будет создан файл requirements.txt. Он указывает пакеты Python, необходимые для запуска приложения-функции.

Установка azure-functions-durable из PyPI

При создании проекта расширение Azure Functions Visual Studio Code автоматически создает виртуальную среду с выбранной версией Python. Затем необходимо активировать виртуальную среду в терминале и установить некоторые зависимости, необходимые для Azure Functions и Durable Functions.

  1. Откройте файл requirements.txt в редакторе и измените его содержимое на следующее:

    azure-functions
    azure-functions-durable
    
  2. В текущей папке откройте интегрированный терминал редактора (CTRL+SHIFT+' ).

  3. В интегрированном терминале активируйте виртуальную среду в текущей папке в зависимости от операционной системы.

    source .venv/bin/activate
    

Затем в интегрированном терминале, где активируется виртуальная среда, используйте pip для установки определенных пакетов.

python -m pip install -r requirements.txt

Примечание.

Необходимо установить azure-functions-durable версии 1.2.4 или более поздней версии.

Создайте ваши функции

Самое базовое приложение Durable Functions имеет три функции:

  • Функция Оркестратор: рабочий процесс, который координирует другие функции.
  • Функция действия: функция, вызываемая функцией оркестратора, выполняет работу и при необходимости возвращает значение.
  • функция Клиент: обычная функция в Azure, которая запускает функцию оркестратора. В этом примере используется функция, активироваемая HTTP.

Пример кода

Чтобы создать базовое приложение Durable Functions с помощью этих трех типов функций, замените содержимое function_app.py следующим кодом Python:

import azure.functions as func
import azure.durable_functions as df

myApp = df.DFApp(http_auth_level=func.AuthLevel.ANONYMOUS)

# An HTTP-triggered function with a Durable Functions client binding
@myApp.route(route="orchestrators/{functionName}")
@myApp.durable_client_input(client_name="client")
async def http_start(req: func.HttpRequest, client):
    function_name = req.route_params.get('functionName')
    instance_id = await client.start_new(function_name)
    response = client.create_check_status_response(req, instance_id)
    return response

# Orchestrator
@myApp.orchestration_trigger(context_name="context")
def hello_orchestrator(context):
    result1 = yield context.call_activity("hello", "Seattle")
    result2 = yield context.call_activity("hello", "Tokyo")
    result3 = yield context.call_activity("hello", "London")

    return [result1, result2, result3]

# Activity
@myApp.activity_trigger(input_name="city")
def hello(city: str):
    return f"Hello {city}"

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

Метод Описание
hello_orchestrator Функция оркестратора, описывающая рабочий процесс. В этом случае оркестрация запускается, вызывает три функции в последовательности, а затем возвращает упорядоченные результаты всех трех функций в списке.
hello Функция действия, которая выполняет работу, организованную. Функция возвращает простое приветствие городу, которому она передана в качестве аргумента.
http_start Функция, запускаемая по HTTP-триггеру, которая запускает процесс оркестрации и возвращает check status ответ.

Примечание.

Durable Functions также поддерживает модель программирования Python версии 2 blueprints. Чтобы использовать схемы, зарегистрируйте функции схемы с помощью azure-functions-durableBlueprintclass. Вы можете зарегистрировать полученную схему как обычно. В качестве примера можно использовать наш sample.

Настройка эмулятора хранилища

Для локальной проверки функции можно использовать Azurite эмулятор для Azure Storage. В local.settings.json установите значение для AzureWebJobsStorage на UseDevelopmentStorage=true, как в этом примере:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "python"
  }
}

Чтобы установить и запустить расширение Azurite в Visual Studio Code, в палитре команд введите Azurite: Start и нажмите клавишу ВВОД.

Вы можете использовать другие варианты хранения для приложения Durable Functions. Для получения дополнительной информации о вариантах и преимуществах хранения, см. раздел Поставщики хранилища Durable Functions.

Локальное тестирование функции

Azure Functions Core Tools предоставляет возможность запуска проекта Azure Functions на локальном компьютере разработки. Если он не установлен, вам будет предложено установить эти средства при первом запуске функции в Visual Studio Code.

  1. Чтобы проверить функцию, задайте точку останова в коде hello функции действия. Выберите F5 или выберите "Отладка " в палитре команд, чтобы запустить проект приложения-функции. Выходные данные основных инструментов отображаются на панели терминала.

    Примечание.

    Дополнительные сведения об отладке см. в разделе диагностика Durable Functions.

  2. На панели терминала скопируйте конечную точку URL-адреса функции, активируемой HTTP.

    Скриншот локального вывода Azure.

  3. Используйте браузер или средство тестирования HTTP для отправки HTTP-запроса POST в конечную точку URL-адреса.

    Последний сегмент замените именем функции оркестратора (hello_orchestrator в нашем примере). URL-адрес должен выглядеть приблизительно так: http://localhost:7071/api/orchestrators/hello_orchestrator.

    Ответ — это начальный результат функции HTTP. Это позволяет узнать, что устойчивая оркестрация успешно запущена. Он еще не отображает конечный результат оркестрации. Ответ включает несколько полезных URL-адреса. Теперь запросите состояние оркестрации.

  4. Скопируйте значение statusQueryGetUriURL-адреса, вставьте его в адресную строку браузера и выполните запрос. Вы также можете продолжать использовать средство тестирования HTTP для выдачи запроса GET.

    Запрос к экземпляру оркестрации для проверки статуса. Вы увидите, что экземпляр завершен и содержит выходные данные или результаты устойчивой функции. Похоже на этот пример:

    {
        "name": "hello_orchestrator",
        "instanceId": "9a528a9e926f4b46b7d3deaa134b7e8a",
        "runtimeStatus": "Completed",
        "input": null,
        "customStatus": null,
        "output": [
            "Hello Tokyo!",
            "Hello Seattle!",
            "Hello London!"
        ],
        "createdTime": "2020-03-18T21:54:49Z",
        "lastUpdatedTime": "2020-03-18T21:54:54Z"
    }
    
  5. Чтобы остановить отладку, в Visual Studio Code выберите SHIFT+F5.

После проверки правильности работы функции на локальном компьютере пришло время опубликовать проект в Azure.

Вход в Azure

Прежде чем создавать Azure ресурсы или публиковать приложение, необходимо войти в Azure.

  1. Если вы еще не вошли, в строке Активность выберите значок Azure. Затем в разделе Resources выберите Sign in to Azure.

    Скриншот окна входа в Azure в Visual Studio Code.

    Если вы уже выполнили вход и видите существующие подписки, перейдите к следующему разделу. Если у вас еще нет учетной записи Azure, выберите Создать учетную запись Azure. Учащиеся могут выбрать Создать учетную запись Azure для учащихся.

  2. При появлении запроса в браузере выберите учетную запись Azure и войдите с помощью учетных данных учетной записи Azure. Если вы создадите новую учетную запись, вы сможете войти после ее создания.

  3. После успешного входа можно закрыть новое окно браузера. Подписки, принадлежащие вашей учетной записи Azure, отображаются на боковой панели.

Создание приложения-функции в Azure

В этом разделе описано, как создать приложение-функцию в плане потребления Flex, а также связанные ресурсы в подписке Azure. Многие решения по созданию ресурсов принимаются на основе поведения по умолчанию. Для получения большего контроля над созданными ресурсами необходимо создать приложение-функцию с дополнительными параметрами.

  1. В Visual Studio Code выберите F1, чтобы открыть палитру команд. В командной строке (>) введите и выберите Azure Functions: создание приложения-функции в Azure.

  2. В подсказках укажите следующие сведения:

    Подсказка Действие
    Выбор подписки Выберите используемую подписку Azure. Запрос не отображается, если в разделе "Ресурсы" отображается только одна подписка.
    Введите новое имя приложения-функции Введите глобально уникальное имя, допустимое в пути URL-адреса. Введенное имя проверяется, чтобы убедиться, что оно уникально в Azure Functions.
    Выбор расположения для новых ресурсов Выберите регион Azure. Для повышения производительности выберите регион рядом с вами. Отображаются только регионы, поддерживаемые планами потребления Flex.
    Выберите стек сред выполнения Выберите языковую версию, выполняемую локально.
    Выбор типа проверки подлинности ресурса Выберите управляемое удостоверение, которое является наиболее безопасным вариантом подключения к учетной записи хранения узла по умолчанию.

    На панели Azure: журнал действий расширение Azure отображает состояние отдельных ресурсов при создании в Azure.

    Скриншот, отображающий журнал создания ресурсов Azure.

  3. При создании приложения-функции в подписке Azure создаются следующие связанные ресурсы. Ресурсы именуются на основе имени, введенного для функционального приложения.

    • группу ресурсов — логический контейнер связанных ресурсов;
    • Приложение-функция, которое предоставляет окружение для выполнения кода вашей функции. Приложение-функция позволяет группировать функции в логические единицы и упростить развертывание, масштабирование и совместное использование ресурсов, а также управление ими в рамках единого плана размещения.
    • План Azure App Service, определяющий базовый узел для приложения-функции.
    • Стандартная учетная запись Azure Storage, которая используется узлом функций для поддержания состояния и других сведений о приложении-функции.
    • Экземпляр Application Insights, подключенный к функциональному приложению, который отслеживает использование функций в приложении.
    • Управляемое удостоверение, назначенное пользователем, которое добавляется в роль участника данных объектного хранилища Blob в новой учетной записи хранилища узла по умолчанию.

    После создания приложения-функции и применения пакета развертывания отобразится уведомление.

    Совет

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

Развертывание проекта в Azure

Внимание

Развертывание в существующем приложении-функции всегда перезаписывает содержимое этого приложения в Azure.

  1. В палитре команд введите и выберите Azure Functions: развертывание в приложении-функции.

  2. Выберите функциональное приложение, которое вы только что создали. При появлении запроса на перезапись предыдущих развертываний выберите «Развернуть», чтобы развернуть функциональный код в новом ресурсе функционального приложения.

  3. После завершения развертывания выберите View Output для просмотра результатов создания и развертывания, включая созданные ресурсы Azure. Если вы пропустили уведомление, выберите значок колокольчика в правом нижнем углу, чтобы увидеть его снова.

    Снимок экрана с окном

Тестирование функции в Azure

  1. Скопируйте URL-адрес триггера HTTP из выходной панели. URL-адрес, вызывающий функцию, активируемую HTTP, должен иметь следующий формат:

    https://<functionappname>.azurewebsites.net/api/orchestrators/hello_orchestrator

  2. Вставьте новый URL-адрес HTTP-запроса в адресную строку браузера. При использовании опубликованного приложения можно ожидать, что вы получите тот же ответ о состоянии, который вы получили при локальном тестировании.

Приложение Python Durable Functions, созданное и опубликованное с помощью Visual Studio Code готово к использованию.

Очистка ресурсов

Если вам больше не нужны ресурсы, созданные для выполнения краткого руководства, чтобы избежать связанных затрат в подписке Azure, удалите группу ресурсов и все связанные ресурсы.