GET and POST with Flask - optimum performance I have this code to POST and save a digest to redis, and retrieve it from redis on a GET. This uses Python and Flask, of course.

@app.route("/message/&lt;shasum&gt;", methods=['GET'])
def get_message(shasum):
    message = redis.get(shasum)
    if message:
        return jsonify(message=message)
    else:
        abort(404)

@app.route("/digest", methods=['POST'])
def get_digest():
    if request.headers['Content-Type'] == 'application/json':
        message = json.loads(request.data)
        sha = sha256(message['message'].encode('utf-8')).hexdigest()
        redis.set(sha, message['message'])
        return (jsonify(digest=sha), 201)
    else:
        return (jsonify(message="Bad Request"), 400 )


what else can I do to improve the performance of this little piece of code, specifically on the POST side and can it be improved on the GET side too?
You can avoid the Content-Type check by using request.get_json() method.




from werkzeug.wrappers import BaseRequest
...

try:
    data = request.get_json()
except BadRequest:
    return (jsonify(message="Bad Request"), 400)

message = data['message']
digest = sha256(message.encode('utf-8')).hexdigest()
redis.set(sha, message)
return (jsonify(digest=digest), 201)



Use better variable names, message can be replaced with data and message variable can be used to store the actual message from data. Similarly sha can be replaced with digest.
The else blocks in both functions can be removed as the corresponding if blocks are already returning. I personally find lesser indented code much easier to read and it also helps in keeping the Cyclomatic complexity low.
There are no check against the data being passed by the user, for example message can be passed as an empty string, None, integer etc. You probably want to use some sort of validation here.