MartinSahlen/cloud-functions-python

functions can't finish execute when its response "Content-Type" is "text/plain" or "text/html"

karheng opened this issue · 6 comments

@MartinSahlen Based on the logs, there is response payload. However, the function seems continue running, can't finish execute until encounter "connection error". Thus, can't get the response from the functions URL.

image

from cloudfn.flask_handler import handle_http_event
from flask import Flask, request, Response

app = Flask('the-function')

@app.route('/run', methods=['GET'])
def testrun():
    return Response(str(123456), mimetype='text/plain')

handle_http_event(app)

@karheng Thanks for submitting issue. Are you able to run this with a json response body and string just to see if we can zone in on where the issue might be?

@MartinSahlen Yes, when is json response body, function will finish execute immediately once the response returned.

image

@karheng , I'll have a a look! Thanks for providing the info! Wondering if this is related to the fact that the body in the first request you posted that failed seems to be an integer and not a string, and if I'm doing something wrong in the parsing / unparsing.

@MartinSahlen You're right! I tested with string, it's working fine.
However, I did convert the integer to string, still can't work (above python code).
image

Yes! I was just trying to locate where the error might be. You did convert the number correctly, however my code does not seem to handle serialization correctly. So I just needed to see that, makes it a lot easier for me to fix the issue. It should be a fast fix, thanks for helping debug.

I'll have a look at this during the weekend!