Spaces:
Runtime error
Runtime error
File size: 1,430 Bytes
879fdec 5585ad5 879fdec 5585ad5 879fdec e2cf778 5585ad5 e2cf778 879fdec |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
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()
@app.route('/api', methods=['GET', 'POST'])
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() |