Azure использовать Python колбу фреймворк для приложения функции - PullRequest
0 голосов
/ 14 марта 2019

Я видел, что Azure теперь поддерживает Python (предварительный просмотр) в приложениях функций. У меня есть приложение Flask, и мне было интересно, можно ли его развернуть как функциональное приложение без существенных изменений?

Я прочитал учебные пособия по Azure, в которых Python используется в приложениях функций (https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference-python),, но не с фреймворком для колб ...

У кого-нибудь есть опыт?

1 Ответ

3 голосов
/ 14 марта 2019

Я пробовал разные способы интеграции функций Azure для Python с платформой Flask.Наконец, я успешно выполнил свою функцию HttpTrigger с именем TryFlask через app.test_client().

. Вот мой пример кода, как показано ниже.

import logging
import azure.functions as func
from flask import Flask, request

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

@app.route('/hi')
def hi():
    return 'Hi World!'

@app.route('/hello')
@app.route('/hello/<name>', methods=['POST', 'GET'])
def hello(name=None):
    return name != None and 'Hello, '+name or 'Hello, '+request.args.get('name')

def main(req: func.HttpRequest) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')
    uri=req.params['uri']
    with app.test_client() as c:
        doAction = {
            "GET": c.get(uri).data,
            "POST": c.post(uri).data
        }
        resp = doAction.get(req.method).decode()
        return func.HttpResponse(resp, mimetype='text/html')

Для тестирования в локальной среде и Azure,получить доступ к URL /, '/ hi' и /hello через URL http(s)://<localhost:7071 or azurefunchost>/api/TryFlask со строкой запроса ?uri=/, ?uri=/hi и ?uri=/hello/peter-pan в браузере и выполнить метод POST для того жеURL выше со строкой запроса ?uri=/hello/peter-pan, все это работает.Пожалуйста, смотрите результаты, как на рисунке ниже, так и на облаке.

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

Примечание: в моемРешение, URL должен быть http(s)://<localhost:7071 or azurefunchost>/<routePrefix defined in host.json, default is api>/<function name>?uri=<uri defined in app.route, like / or /hi or /hello, even /hello/peter-pan?name=peter>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...