Переслать копию http-запросов в другую (тестовую) среду
Я хочу, чтобы все производственные данные для моего веб-приложения также передавались через мою среду тестирования. По сути, я хочу перенаправлять каждый http-запрос на производственный сайт на тестовый сайт (а также сделать так, чтобы производственный веб-сайт обслуживал его!).
Какой хороший способ сделать это? Мой сайт построен с использованием Django и обслуживается mod_wsgi. Это лучше всего реализовано на уровне приложений (Django), на уровне веб-сервера (Apache) или на уровне mod_wsgi?
1 ответ
Мне удалось переслать запрос, как это
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(...)
Для повторного использования кода рассмотрим декораторы