Spaces:
Runtime error
Runtime error
from flask import Flask, request, jsonify | |
from queue import Queue | |
from threading import Thread | |
import os | |
import time | |
import requests | |
app = Flask(__name__) | |
queue = Queue() | |
API_ENDPOINT = os.environ.get("API_ENDPOINT", "") | |
WORKERS = int(os.environ.get("WORKERS", "1")) | |
def worker(): | |
while True: | |
req = queue.get() | |
if req is None: | |
break | |
# Forward the request to the API endpoint | |
response = requests.request(req['method'], API_ENDPOINT, headers=req['headers'], data=req['data']) | |
req['result'] = response.json() | |
queue.task_done() | |
def handle_request(): | |
headers = {key: value for key, value in request.headers} | |
data = request.get_data() | |
method = request.method | |
# Add the request to the queue | |
req = {'headers': headers, 'data': data, 'method': method, 'result': None} | |
queue.put(req) | |
# Wait until the request has been processed | |
while req['result'] is None: | |
time.sleep(0.1) | |
return jsonify(req['result']), 200 | |
if __name__ == "__main__": | |
# Start the worker threads | |
threads = [] | |
for i in range(WORKERS): | |
t = Thread(target=worker) | |
t.start() | |
threads.append(t) | |
# Start the Flask app | |
app.run(host='0.0.0.0', port=5000) | |
# Stop the worker threads | |
for i in range(WORKERS): | |
queue.put(None) | |
for t in threads: | |
t.join() |