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) | |