【问题标题】:How to use Python 3 imports properly in Google Cloud Functions如何在 Google Cloud Functions 中正确使用 Python 3 导入
【发布时间】:2019-11-26 07:33:50
【问题描述】:

我正在制作一个简单的函数来检查 URL 状态并在 404 上重定向。这个应用程序在 Flask localhost 中运行良好,但是当我将它移动到 Google Cloud Functions 时,我不断收到“错误:无法处理请求”。这是我在 Cloud Function 和 localhost 上的参数完全相同的时候。

我在从 Flask 导入“重定向”时做错了吗?

GCLOUD 代码:不起作用

from flask import Flask, redirect
from flask import request
import requests


def urlincoming():
    custID = request.args['custID']
    token = request.args['token']
    custEmail = request.args['custEmail']
    storeDomain = request.args['domain']
    adminEmail = request.args['adminEmail']
    baseUrl = f"{storeDomain}/account/reset/{custID}/{token}"
    baseUrlFailedAuth = f"{storeDomain}/account/invalid_token"
    requestBaseUrl = requests.head(baseUrl)
    if(requestBaseUrl.status_code == 200):
        return redirect(baseUrl)
    else:
        return redirect(baseUrlFailedAuth)

本地主机代码:工作中

from flask import Flask, redirect
from flask import request
import requests

app = Flask(__name__)


@app.route('/urlincoming')
def urlincoming():
    custID = request.args['custID']
    token = request.args['token']
    custEmail = request.args['custEmail']
    storeDomain = request.args['domain']
    adminEmail = request.args['adminEmail']
    baseUrl = f"{storeDomain}/account/reset/{custID}/{token}"
    baseUrlFailedAuth = f"{storeDomain}/account/invalid_token"
    requestBaseUrl = requests.head(baseUrl)
    if(requestBaseUrl.status_code == 200):
        return redirect(baseUrl)
    else:
        return redirect(baseUrlFailedAuth)

【问题讨论】:

  • 你能打印你的错误和你用来部署你的函数的命令吗?
  • 嗨@lemcoders 你能接受达斯汀的正确答案,以便更好地了解其他社区成员吗?

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


【解决方案1】:

所有 Google Cloud Functions 都需要具有以下两个签名之一:

HTTP 函数:

function_name(request):
    ...

后台功能:

function_name(data, context):
    ...

根据您要创建的函数类型,您需要添加requestdata, context 参数。

【讨论】:

  • 好的,谢谢,我必须承认我对 GCP 还不是很熟练,使用 docker 进行云运行更加灵活。
  • 嗨@lemcoders 你能接受达斯汀的正确答案,以便更好地了解其他社区成员吗?
【解决方案2】:
from flask import redirect
import requests


def urlincoming(request):

我可以通过将请求添加为参数来解决问题,但我不确定它为什么会起作用:/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 2018-08-16
    • 2020-02-13
    • 2020-03-11
    • 2023-03-16
    • 1970-01-01
    • 2020-03-07
    相关资源
    最近更新 更多