Вот как я обрабатываю HTTP-запросы в прокси-сервере:
Код: Выделить всё
from flask import Flask, request, Response
import requests
import logging
import urllib.parse
import grpc
app = Flask(__name__)
logger = logging.getLogger(__name__)
RAY_DASHBOARD_URL = "http://localhost:8265"
@app.route('/
', methods=['GET', 'POST', 'PUT', 'DELETE', 'PATCH'])
def proxy(path):
url = f"{RAY_DASHBOARD_URL}/{path}"
headers = {key: value for key, value in request.headers if key != 'Host'}
query_string = urllib.parse.urlencode(request.args)
if query_string:
url = f"{url}?{query_string}"
logger.info(f"Proxying request to {url}")
if request.headers.get('Content-Type') == 'application/grpc':
# TODO: Add GRPC forwarding logic here
pass
else:
response = requests.request(
method=request.method,
url=url,
headers=headers,
data=request.get_data(),
cookies=request.cookies,
allow_redirects=False,
)
excluded_headers = ['content-encoding', 'content-length', 'transfer-encoding', 'connection']
headers = [(name, value) for name, value in response.raw.headers.items() if name.lower() not in excluded_headers]
return Response(response.content, response.status_code, headers)
if __name__ == '__main__':
app.run(debug=True)
У меня есть доступ к сгенерированным файлам GRPC, скомпилированным из конфигураций прототипов на ray.core. .сгенерировано. Я думаю, что на этом можно было бы основывать реализацию, но, похоже, это будет переопределять каждый маршрут повсюду.
Как я могу просто переслать запрос gRPC от обратного прокси-сервера на этом этапе?< /п>
Подробнее здесь: https://stackoverflow.com/questions/787 ... er-for-ray