4

Я хочу, чтобы все производственные данные для моего веб-приложения также проходили через мою тестовую среду. По сути, я хочу перенаправить каждый HTTP-запрос на сайт-изготовитель на тестовый сайт (а также предоставить веб-сайт для публикации!).Переслать копию http-запросов в другую (тестовую) среду

Что такое хороший способ сделать это? Мой сайт построен с Django и поддерживается mod_wsgi. Лучше ли это реализовано на уровне приложений (Django), уровне веб-сервера (Apache) или на уровне mod_wsgi?

+0

Так каждый раз, когда кто-то бьет ваше производство сайта, вы хотите, чтобы направить этот запрос на тестовом сайт? Мне любопытно, почему? –

+0

Да. Я хочу развернуть новые функции в тестовую среду, где я могу получить метрики о том, как они работают с производственными данными, прежде чем фактически внедрить их в производство. Я * думаю * Я попытаюсь сделать это в сценарии wsgi, который служит моему приложению, и посмотрите, как это происходит. Я попробую пару вещей и отправлю сюда о том, что работает (или нет). – raviv

+0

Вы в конечном итоге выяснили, как это сделать? –

ответ

7

мне удалось направить запрос, как этот

def view(request): 
    # do what you planned to do here 
    ... 

    # processing headers 
    def format_header_name(name): 
     return "-".join([ x[0].upper()+x[1:] for x in name[5:].lower().split("_") ]) 
    headers = dict([ (format_header_name(k),v) for k,v in request.META.items() if k.startswith("HTTP_") ]) 
    headers["Cookie"] = "; ".join([ k+"="+v for k,v in request.COOKIES.items()]) 

    # this conversion is needed to avoid http://bugs.python.org/issue12398 
    url = str(request.get_full_path()) 

    # forward the request to SERVER_DOMAIN 
    conn = httplib.HTTPConnection("SERVER_DOMAIN") 
    conn.request(
     request.method, 
     url, 
     request.raw_post_data, 
     headers 
    ) 
    response = conn.getresponse() 

    # some error handling if needed 
    if response.status != 200: 
     ... 

    # render web page as usual 
    return render_to_response(...) 

Для повторного использования кода, рассмотрят декоратор

 Смежные вопросы

  • Нет связанных вопросов^_^