Django Runserver не работает на OSX LION - PullRequest
1 голос
/ 01 февраля 2012

У меня проблемы с runserver на osx lion.Статические активы не будут передаваться случайным образом, и я иногда получаю это сообщение:

----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 57555)
Traceback (most recent call last):
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 284, in _handle_request_noblock
    self.process_request(request, client_address)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 310, in process_request
    self.finish_request(request, client_address)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 323, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/Users/ehutch79/pyenv/sd/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 570, in __init__
    BaseHTTPRequestHandler.__init__(self, *args, **kwargs)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 639, in __init__
    self.handle()
  File "/Users/ehutch79/pyenv/sd/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 610, in handle
    self.raw_requestline = self.rfile.readline()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 447, in readline
    data = self._sock.recv(self._rbufsize)
timeout: timed out
----------------------------------------

Это очень противоречиво.Поиски в Google ничего не показали.Кто-нибудь имеет какие-либо идеи, что может быть причиной этого?

Кажется, это не браузер, как я видел это и в Chrome, локально, и т. Е. И Chrome на удаленной коробке.

1 Ответ

3 голосов
/ 01 февраля 2012

Сервер dev является однопоточным, поэтому, если 2 соединения выполняются одновременно и блокируются, они будут ждать друг друга вечно.Убедитесь, что у вас нет такой проблемы:

  • проверьте, есть ли у вас какие-либо настройки, которые могут инициировать два соединения одновременно (какой-нибудь плагин или какой-то javascript, который устанавливает соединения неявно).
  • проверьте, есть ли у вас представления, которые обращаются к одному и тому же блокирующему ресурсу в одно и то же время.

Это недавно произошло со мной, когда я пытался протестировать вызовы SOAP из моего собственного кода на мойсобственный код, urllib открывал из представления URL, вызывающий другое представление.

Иногда он не обращается к ресурсам блокировки, но параллелизм делает запросы очень медленными, и поэтому время ожидания истекает.Например, у вас есть два браузера, указывающих на один и тот же devserver, и они выполняют агрессивный HTTP KeepAlive.

Ничего не поделаешь, кроме использования чего-то еще для тестирования этих специфических функций, таких как gunicorn или werkzeug.Для werzeug установите django-extensions и используйте ./manage.py runserver_plus --threaded

...