Azure Функции HTTP Trigger: как вернуть исключение из python рабочего журнала в вызывающую программу API - PullRequest
0 голосов
/ 07 января 2020

Я новичок в Azure функциях. Хотелось бы узнать, как вернуть исключение из python рабочего журнала в вызывающую функцию API.

В триггере HTTP с привязкой к базе данных COSMOS при запуске вызова вставки для привязки, если данные уже существуют, происходит сбой с

"System.Private.CoreLib: Исключительная ситуация при выполнении функции: Functions.insertEntityData. Microsoft. Azure .DocumentDB.Core: Объект с указанным идентификатором уже существует в системе. "

Как это сообщение может быть отправлено обратно конечному пользователю? Это никуда не попадает.

def main(req: func.HttpRequest, cosmosdata: func.Out[func.Document]) -> func.HttpResponse:
    try:
        message = ""
        logging.info('Python HTTP trigger function processed a request.')
        entity_name = req.route_params['entity']
        status_code = 500
        payload = req.get_json()
        if payload:
            try:
                logging.info(payload)
                resultant = cosmosdata.set(func.Document.from_dict(payload))
                logging.info(resultant)
                status_code = 200
                message = "Insert Successful to %s" % (entity_name)

            except Exception as e:
                return func.HttpResponse(str(e), status_code=500)
        else:
            status_code = 400
            message = "Please pass data in the POST Request"
    except Exception as e:
        return func.HttpResponse(str(e), status_code=500)

    return func.HttpResponse(message, status_code=500)

1 Ответ

0 голосов
/ 07 января 2020

Блок try / catch не работает, потому что вы используете привязку Output к Cosmos Db, которая является ошибочной. Тем не менее, это также выглядит странно для меня, потому что по умолчанию он выполняет и операцию Upsert.

Я считаю, что проблема связана с ключом вашего раздела, определенным в функции. json file.

https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-cosmosdb-v2#input --- python -examples

...