【问题标题】:How to convert flask app into google cloud functions如何将烧瓶应用程序转换为谷歌云功能
【发布时间】:2019-11-21 17:15:21
【问题描述】:

我想将我的烧瓶应用程序转换为谷歌云功能。函数是无状态的,我不知道该怎么做。我已经简化了我的应用程序,因此如果有人可以帮助我将其简单地转换为纯 python,以便我可以将其部署为谷歌云功能。



OAUTH = OAuth(APP)
MSGRAPH = OAUTH.remote_app(
    'microsoft', consumer_key=config.CLIENT_ID, consumer_secret=config.CLIENT_SECRET,
    request_token_params={'scope': config.SCOPES},
    base_url=config.RESOURCE + config.API_VERSION + '/',
    request_token_url=None, access_token_method='POST',
    access_token_url=config.AUTHORITY_URL + config.TOKEN_ENDPOINT,
    authorize_url=config.AUTHORITY_URL + config.AUTH_ENDPOINT)



@APP.route('/login')
def login():
    """Prompt user to authenticate."""
    flask.session['state'] = str(uuid.uuid4())
    return MSGRAPH.authorize(callback=config.REDIRECT_URI, state=flask.session['state'])

@APP.route('/login/authorized')
def authorized():
    """Handler for the application's Redirect Uri."""
    if str(flask.session['state']) != str(flask.request.args['state']):
        raise Exception('state returned to redirect URL does not match!')
    response = MSGRAPH.authorized_response()
    flask.session['access_token'] = response['access_token']
    return return "200"


@MSGRAPH.tokengetter
def get_token():
    """Called by flask_oauthlib.client to retrieve current access token."""
    return (flask.session.get('access_token'), '')

【问题讨论】:

    标签: python flask google-cloud-platform google-cloud-functions


    【解决方案1】:

    此应用无法很好地转换为 Cloud Functions:您在每个路由之间共享会话状态,而 Cloud Functions 是无状态的。

    根据您存储此状态的方式(即,如果它不只是在内存中),您最好将应用部署到 Cloud Run

    【讨论】:

    • 有没有办法使用云函数来实现?
    • 您使用 Cloud Functions 的目标是什么?当每个函数都是独立的并且不依赖于其他函数的状态时,云函数的效果最好。
    • 我的目标是使用 microsoft graph api 阅读电子邮件并使用谷歌云功能将它们存储在 azure 数据库中。
    • 那你为什么需要登录和会话呢?
    • 这将更适合 Cloud Run:这些功能不能彼此独立运行。您已经有一个 Flask 应用,因此应该可以直接将其部署到 Cloud Run:cloud.google.com/run/docs/quickstarts/build-and-deploy
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-29
    • 2019-08-12
    • 1970-01-01
    • 2021-11-20
    相关资源
    最近更新 更多