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


Краткое руководство. Создание приложения Устойчивые функции Python

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

В этом кратком руководстве вы используете расширение Устойчивые функции в Visual Studio Code для локального создания и тестирования приложения hello world Устойчивые функции в Функции Azure. Устойчивые функции оркестрации и цепочки приложений объединяют вызовы к другим функциям. Затем вы публикуете код функции в Azure. Используемые средства доступны через расширение Visual Studio Code.

Снимок экрана: работающее приложение Устойчивые функции в Azure.

Примечание.

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

Необходимые компоненты

Для работы с этим кратким руководством вам понадобится:

  • Установленный экземпляр Visual Studio Code.

  • Установленное Функции Azure расширение Visual Studio Code.

  • Последняя версия установленных Функции Azure Core Tools.

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

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

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

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

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

В этом разделе вы используете Visual Studio Code. чтобы создать локальный проект Функций Azure.

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

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

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

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

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

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

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

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

При создании проекта расширение Функции Azure Visual Studio Code автоматически создает виртуальную среду с выбранной версией Python. Вам нужно активировать виртуальную среду в терминале и установить ряд зависимостей, которые требуются для Функций Azure и Устойчивых функций.

  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 или более поздней версии.

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

Самый простой Устойчивые функции приложение имеет три функции:

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

Пример кода

Чтобы создать базовое приложение Устойчивые функции с помощью этих трех типов функций, замените содержимое 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/hello_orchestrator")
@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 ответ.

Примечание.

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

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

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

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

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

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

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

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

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

    Примечание.

    Дополнительные сведения об отладке см. в Устойчивые функции диагностика.

  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. Затем в разделе "Ресурсы" выберите вход в Azure.

    Снимок экрана: вход в окно Azure в Visual Studio Code.

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

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

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

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

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

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

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

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

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

    Снимок экрана: журнал создания ресурсов Azure.

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

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

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

    Совет

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

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

Внимание

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

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

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

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

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

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

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

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

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

Приложение Python Устойчивые функции, созданное и опубликованное с помощью Visual Studio Code, готово к использованию.

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

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