Spaces:
Runtime error
Runtime error
import asyncio | |
import os | |
from aiohttp import ClientSession | |
from flask import Flask, request, jsonify | |
from werkzeug.exceptions import HTTPException | |
API_ENDPOINT = os.environ.get("API_ENDPOINT", "") | |
WORKERS = int(os.environ.get("WORKERS", "1")) | |
app = Flask(__name__) | |
loop = asyncio.new_event_loop() | |
asyncio.set_event_loop(loop) | |
sem = asyncio.Semaphore(WORKERS) | |
def handle_request(): | |
headers = {key: value for key, value in request.headers} | |
data = request.get_data().decode() | |
method = request.method | |
response = loop.run_until_complete( | |
forward_request(headers, data, method)) | |
return jsonify(response), 200 | |
async def forward_request(headers, data, method): | |
async with sem, ClientSession() as session: | |
if method == 'POST': | |
async with session.post(API_ENDPOINT, headers=headers, data=data) as resp: | |
return await resp.json() | |
elif method == 'GET': | |
async with session.get(API_ENDPOINT, headers=headers) as resp: | |
return await resp.json() | |
def handle_exception(e): | |
response = e.get_response() | |
response.data = jsonify({"code": e.code, "name": e.name, "description": e.description}) | |
return response | |
if __name__ == "__main__": | |
app.run(host='0.0.0.0', port=5000) | |