У меня возникает ошибка 404 в моей функции Azure

На странице обзора приложения-функции я создал на портале новую функцию со следующими настройками:

    • Настройка среды разработки
      • Среда разработки: Разработка на портале
    • Выберите шаблон
      • Шаблон: HTTP-триггер
    • Детали шаблона:
      • Новая функция: количество слов
      • Уровень авторизации: Функция

Я выбрал вкладку «Код + Тест», заменил код функции по умолчанию кодом ниже и сохранил его.

import logging
import azure.functions as func
import json
import re
from collections import Counter

# List of stop words to be ignored
STOPWORDS = set([
    '', 'i', 'me', 'my', 'myself', 'we', 'our', 'ours', 'ourselves', 'you',
    "you're", "you've", "you'll", "you'd", 'your', 'yours', 'yourself',
    'yourselves', 'he', 'him', 'his', 'himself', 'she', "she's", 'her',
    'hers', 'herself', 'it', "it's", 'itself', 'they', 'them',
    'their', 'theirs', 'themselves', 'what', 'which', 'who', 'whom',
    'this', 'that', "that'll", 'these', 'those', 'am', 'is', 'are', 'was',
    'were', 'be', 'been', 'being', 'have', 'has', 'had', 'having', 'do',
    'does', 'did', 'doing', 'a', 'an', 'the', 'and', 'but', 'if', 'or',
    'because', 'as', 'until', 'while', 'of', 'at', 'by', 'for', 'with',
    'about', 'against', 'between', 'into', 'through', 'during', 'before',
    'after', 'above', 'below', 'to', 'from', 'up', 'down', 'in', 'out',
    'on', 'off', 'over', 'under', 'again', 'further', 'then', 'once', 'here',
    'there', 'when', 'where', 'why', 'how', 'all', 'any', 'both', 'each',
    'few', 'more', 'most', 'other', 'some', 'such', 'no', 'nor', 'not',
    'only', 'own', 'same', 'so', 'than', 'too', 'very', 'can', 'will',
    'just', "don't", 'should', "should've", 'now', "aren't", "couldn't",
    "didn't", "doesn't", "hadn't", "hasn't", "haven't", "isn't", "mightn't", "mustn't",
    "needn't", "shan't", "shouldn't", "wasn't", "weren't", "won't", "wouldn't"
])

def main(req: func.HttpRequest) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

    try:
        req_body = req.get_json()
        if "values" in req_body:
            vals = req_body["values"]
            res = {"values": []}

            for rec in vals:
                # Get the record ID and text for this input
                record_id = rec['recordId']
                text = rec['data'].get('text', '')

                # Remove punctuation and numerals, and convert to lowercase
                text = re.sub(r'[^A-Za-z\s]', '', text).lower()

                # Get an array of words
                words = text.split()

                # Count instances of non-stopwords
                word_counts = Counter(word for word in words if word not in STOPWORDS)

                # Get the top 10 most frequent words
                top_words = [word for word, count in word_counts.most_common(10)]

                # Append result for this record
                res["values"].append({
                    "recordId": record_id,
                    "data": {
                        "text": top_words
                    }
                })

            return func.HttpResponse(
                body=json.dumps(res),
                status_code=200,
                mimetype = "application/json"
            )

        else:
            return func.HttpResponse(
                body=json.dumps({"errors": [{"message": "Invalid input"}]}),
                status_code=400,
                mimetype = "application/json"
            )

    except Exception as e:
        logging.error(f"Error processing request: {e}")
        return func.HttpResponse(
            body=json.dumps({"errors": [{"message": str(e)}]}),
            status_code=500,
            mimetype = "application/json"
        )

На панели «Тестирование/Выполнение» я заменяю существующее тело следующим JSON, и при его запуске получаю ошибку 404.

Примечание. Я использовал запрос https POST.

{
    "values": [
        {
            "recordId": "a1",
            "data":
            {
            "text":  "Tiger, tiger burning bright in the darkness of the night.",
            "language": "en"
            }
        },
        {
            "recordId": "a2",
            "data":
            {
            "text":  "The rain in spain stays mainly in the plains! That's where you'll find the rain!",
            "language": "en"
            }
        }
    ]
}

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

{
"values": [
    {
    "recordId": "a1",
    "data": {
        "text": [
        "tiger",
        "burning",
        "bright",
        "darkness",
        "night"
        ]
    },
    "errors": null,
    "warnings": null
    },
    {
    "recordId": "a2",
    "data": {
        "text": [
        "rain",
        "spain",
        "stays",
        "mainly",
        "plains",
        "thats",
        "youll",
        "find"
        ]
    },
    "errors": null,
    "warnings": null
    }
]
}
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Сначала создал функцию Python с количеством слов и уровнем функции, как показано ниже:

Первоначально я также получил 404 Not Found, используя ваш код:

Затем я заменил def main(req: func.HttpRequest) -> func.HttpResponse: на

app = func.FunctionApp(http_auth_level=func.AuthLevel.FUNCTION)
@app.route(route = "wordcount")
def wordcount(req: func.HttpRequest) -> func.HttpResponse:

тогда это сработало для меня:

import logging
import azure.functions as func
import json
import re
from collections import Counter

# List of stop words to be ignored
STOPWORDS = set([
    '', 'i', 'me', 'my', 'myself', ---
--------------------------------------//rest same
--------------------------------------
 "wouldn't"])

app = func.FunctionApp(http_auth_level=func.AuthLevel.FUNCTION)
@app.route(route = "wordcount")
def wordcount(req: func.HttpRequest) -> func.HttpResponse:
    -----------
    -----------//rest same
    -----------

Большое спасибо за это. У меня это тоже сработало

Techzill 27.08.2024 16:01

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

Развертывание функции Azure с помощью действий Github завершается неудачей без указания четкой причины
Получение ошибки «Azure.Storage.Queues: значение не может быть нулевым» в функции Azure с триггером BLOB-объекта
Расширения OpenAPI для Swagger в функции Azure v4 — пользовательский интерфейс Swagger пуст
Ошибка [ERR_MODULE_NOT_FOUND]: работнику не удалось загрузить точку входа «dist/src/functions/trigger.js»
Как я могу зарегистрировать HTTP-ответ с помощью промежуточного программного обеспечения в функциях Azure, выполняющих изолированный процесс .NET 8?
Как отладить zip-развертывание функции Python Azure?
Триггер очереди Azure с настраиваемым именем подключения
Подключение к служебной шине из стандартного рабочего процесса приложения логики в сравнении с кодом
Функции Azure исчезают из приложения при смене компьютеров
Как я могу отладить ошибку: сообщение достигло MaxDequeueCount, равного 5. Перемещение сообщения в очередь «pcaob-poison»?

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

Получите список клиентов-арендаторов без доступа к API Центра партнеров
ModuleNotFoundError: нет модуля с именем «azure.keyvault» — запуск конвейера Azure
Как найти AZURE_ENDPOINT, AZURE_API_KEY и KNOWLEDGE_BASE_ID на последней версии портала Azure?
Как получить список конвейеров в фабрике данных Azure для определенной ветки?
Можно ли получить значение из большого двоичного объекта (загруженного в контейнер CSV) и передать его в приложение логики?
Развертывание функции Azure с помощью действий Github завершается неудачей без указания четкой причины
Доступ к параметрам приложения логики в коде сценария PowerShell в стандартных рабочих процессах
Azure: команда nuget завершилась с ошибкой с кодом выхода (null) и error() — пакеты не удалось восстановить
Как запросить разрешения OAuth2 для субъектов службы в Entra ID с помощью Microsoft Graph Powershell?
(111: Соединение отклонено) при подключении к восходящему каналу — многоконтейнерное приложение NGINX/Docker