Need to execute a function after returning the response in Flask
flask, python
Solution
I will expose my solution.
You can use threads to compute anything after returned something in your function called by a flask route.
import time
from threading import Thread
from flask import request, Flask
app = Flask(__name__)
class Compute(Thread):
def __init__(self, request):
Thread.__init__(self)
self.request = request
def run(self):
print("start")
time.sleep(5)
print(self.request)
print("done")
@app.route('/myfunc', methods=["GET", "POST"])
def myfunc():
thread_a = Compute(request.__copy__())
thread_a.start()
return "Processing in background", 200
Problem
For one request alone i need to execute a function after sending the response to the client. Because the function takes time and that ends up in connection timeout `Socket error: [Errno 32] Broken pipe` Is there a way in Flask to execute function after returning the request