learncodes123
learncodes123

Reputation: 401

How to use Python 3 imports properly in Google Cloud Functions

I am making a simple function to check a URL status and redirect on 404. This app works fine in Flask localhost but when I move this to Google Cloud Functions, I keep getting "Error: could not handle the request". This is when my parameters on both the Cloud Function and the localhost are the exact same.

Am I doing something wrong with importing 'redirect' from Flask?

GCLOUD CODE: NOT WORKING

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)

LOCALHOST CODE: WORKING

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)

Upvotes: 2

Views: 803

Answers (2)

Dustin Ingram
Dustin Ingram

Reputation: 21580

All Google Cloud Functions need to have one of the following two signatures:

HTTP Functions:

function_name(request):
    ...

Background functions:

function_name(data, context):
    ...

Depending on the type of function you're creating, you either need to add the request or data, context arguments.

Upvotes: 1

learncodes123
learncodes123

Reputation: 401

from flask import redirect
import requests


def urlincoming(request):

I was able to fix things by adding the request as a argument but I'm not sure why it worked :/

Upvotes: 1

Related Questions