Подтвердить что ты не робот

Аварийный сбой сервера неожиданно во время запуска django

Я запускаю приложение django на скручивание, используя скрипты django-on-twisted от этого сайта.

Все запросы обслуживаются сервером nginx, который обращает прокси соответствующие запросы на скрученные. У меня есть установка url для API, которая в основном просто получает запросы на получение и выполняет некоторую обработку параметров get перед отправкой ответа. Однако, когда конкретный клиент нажимает api, скрученный сервер просто выключается. Вставка ниже - журнал Nginx:

the.ip.of.client - - [21/Apr/2012:11:30:36 -0400] "GET /api/url/?get=params&more=params HTTP/1.1" 499 0 "-" "Java/1.6.0_24"

Скрученные журналы не показывают ничего, кроме скрученных остановок, работающих в этой точке. По коду ошибки 499, я предполагаю, что клиент неожиданно закрыл соединение, с которым у меня нет проблем. Получает ли клиент ответ или нет, для меня это не важно. Вот соответствующий вид django:

def api_url(request):
    if request.GET:
        get_param = request.GET.get('get', [''])[0]
        more_param = request.GET.get('more', [''])[0]
        #some processing here based on the get params
        return HttpResponse('OK')
    else:
        raise Http404

Запрос от клиента является действительным запросом и не влияет на обработку неблагоприятным образом. Я тестировал его из оболочки. Когда я попробовал это на сервере разработки django, он разбился так же, не оставив следов получения запроса. Все работает отлично, проверяя его в браузере. Кроме того, скрученный сервер хорошо работает для всех обычных случаев использования. Это первый раз, когда я столкнулся с проблемой. Любая помощь или указатели будут оценены.

4b9b3361

Ответ 1

В rfc нет кода 499 http. Nginx определяет сам код 499.

Когда клиент отправил запрос и закрыл соединение, не дожидаясь ответ, код 499. Если в вашем access_log, в основном это связано с медленными back-end (слишком медленными для вашего пользователям ждать). Возможно, вам придется оптимизировать работу вашего сайта.

http://forum.nginx.org/read.php?2,213789,213794#msg-213794

Ответ 2

  • Вы говорите, что проблема заключается в том, что клиент нажимает на определенный URL (воспроизводимый?)
  • поскольку он работает для вас с помощью пушки, но не с django-on-twisted, либо script работает неправильно, либо проблема twisted.web2.

попробуйте $ sh init.sh yourdjangoproject stand.

вы также можете попробовать изменить run.py, чтобы поймать SystemExit:

import pdb
try:
   # __main__ stuff here.
except (KeyboardInterrupt, SystemExit):
   pdb.set_trace()