In python using Flask, how can I write out an object for download?
Question: I'm using Flask and running foreman. I data that I've constructed in memory
and I want the user to be able to download this data in a text file. I don't
want write out the data to a file on the local disk and make that available
for download.

I'm new to python. I thought I'd create some file object in memory and then
set response header, maybe?


Answer: Streaming files to the client without saving them to disk is covered in the
"pattern" section of Flask's docs - specifically, [in the section on
streaming](http://flask.pocoo.org/docs/patterns/streaming/). Basically, what
you do is return a fully-fledged
[`Response`](http://flask.pocoo.org/docs/api/#flask.Response) object wrapping
your iterator:

    
    
    from flask import Response
    
    # construct your app
    
    @app.route("/get-file")
    def get_file():
        results = generate_file_data()
        generator = (cell for row in results
                        for cell in row)
    
        return Response(generator,
                           mimetype="text/plain",
                           headers={"Content-Disposition":
                                        "attachment;filename=test.txt"})
    

