Django: IE не загружает localhost или загружается очень МЕДЛЕННО

#django #performance #internet-explorer #loading

#django #Производительность #internet-explorer #Загрузка

Вопрос:

Я только начинаю изучать Django, создаю проект на своем компьютере под управлением 64-разрядной Windows 7, Python 2.7, Django 1.3.

В принципе, что бы я ни написал, оно загружается в Chrome и Firefox мгновенно. Но для IE (версии 9) он просто останавливается там и ничего не делает. Я могу загрузить «http://127.0.0.1:8000 » включите IE и оставьте компьютер включенным на несколько часов, и он не загружается. Иногда, когда я обновляю пару раз или перезапускаю IE, это будет работать. Если я что-то изменяю в коде, опять же, Chrome и Firefox мгновенно отражают изменения, тогда как IE этого не делает — если он вообще загружает страницу.

Что происходит? Я здесь схожу с ума….

Комментарии:

1. Я не уверен, что заставляет IE вести себя таким образом, но я видел точно такое же поведение. Я занимаюсь разработкой в Linux и при кроссплатформенном тестировании запускаю сервер разработки с определенным IP: 8000. Я заметил, что IE сделает несколько запросов, а затем остановится. Я перезапущу сервер разработки, и он снова заработает для нескольких запросов.

2. на моем Mac (Mountain Lion) я могу использовать сервер разработки только с Chrome, в Firefox и Safari он застрял : (

Ответ №1:

Это может быть связано с этой проблемой:https://code.djangoproject.com/ticket/16099

По сути, сервер разработки не является многопоточным, и если браузер открывает соединение, а затем пытается установить второе соединение, чтобы фактически получить данные, оно может зависнуть навсегда.

Редактировать:

Также смотрите Эту проблему:https://code.djangoproject.com/ticket/15178

Если вы можете предоставить способ воспроизвести проблему, мы, возможно, сможем найти исправление.

Кроме того, если бы вы могли попробовать последнюю версию разработки и посмотреть, исправляет ли это, мы недавно выпустили новый патч, который добавляет возможность многопоточности в команду runserver.

Комментарии:

1. Я думаю, что именно в этом и заключается проблема. Как только я закрывал другие браузеры и использовал IE только для открытия страницы на сервере разработки, это срабатывало каждый раз. Но это все еще немного медленнее, чем Chrome или Firefox … но я думаю, мне просто придется с этим смириться.

2. Действительно, я заполнил тикет 15178 и только что подтвердил, что использование многопоточного сервера разработки исправляет это. Исправление находится в редакции 16427.

Ответ №2:

Я не уверен, что у вас такая же проблема, как у меня. Но я также столкнулся с той же белой страницей в IE9, и, по-видимому, это было вызвано тем, что html-тег «fieldset» скрывает мою форму.

Попробуйте проверить свой html-код или проверьте совместимость html-тегов с IE9. Надеюсь, это поможет.

Ответ №3:

Я разрабатываю с Windows 7, 64bit, django 1.3, py 2.6 и я всегда проверяю функциональность сервера разработки в IE, Firefox, Safari и Chrome. В моей новейшей системе установлен IE9, а в моей старой системе — IE8. Я также заметил проблему зависания. Я обнаружил, что когда я использовал 127.0.0.1: 8000, он зависал и требовал обновления, чтобы заставить его работать. Если я запустил сервер разработки, используя определенный IP-адрес моего сервера разработки, проблема, казалось, исчезла. Например, python manage.py runserver 192.168.1.134:8000

Похоже, это что-то очень специфичное для IE9. и если вы загуглите, больше людей увидят эту проблему.

Ответ №4:

у меня тоже была эта проблема, это обходное решение устраняет. работает только для django <= 1.3
http://nedbatchelder.com/blog/201103/quick_and_dirty_multithreaded_django_dev_server.html

@Andrew Barber
РЕДАКТИРОВАТЬ резюме / как я это сделал:
создайте файл с именем managec.py (c = параллельный)
вставьте туда следующий код:

 #!/usr/bin/env python
# 
# A clone of manage.py, with multi-threadedness monkeypatched in.

import os, sys
from django.core.management import execute_manager
try:
    import settings # Assumed to be in the same directory.
except ImportError:
    sys.stderr.write(
        "Error: Can't find the file 'settings.py' in the directory containing %r. "
        "It appears you've customized things.n"
        "You'll have to run django-admin.py, passing it your settings module.n"
        "(If the file settings.py does indeed exist, it's causing an ImportError somehow.)n" 
        % __file__
        )
    sys.exit(1)

def monkey_patch_for_multi_threaded():
    # This monkey-patches BaseHTTPServer to create a base HTTPServer class that 
    # supports multithreading 
    import BaseHTTPServer, SocketServer 
    OriginalHTTPServer = BaseHTTPServer.HTTPServer

    class ThreadedHTTPServer(SocketServer.ThreadingMixIn, OriginalHTTPServer): 
        def __init__(self, server_address, RequestHandlerClass=None): 
            OriginalHTTPServer.__init__(self, server_address, RequestHandlerClass) 

    BaseHTTPServer.HTTPServer = ThreadedHTTPServer

if __name__ == "__main__":
    monkey_patch_for_multi_threaded()
    execute_manager(settings)
  

запустите свой сервер разработки с помощью ./managec.py запустите сервер 8080 (или любой другой порт, который вы используете)

наслаждайтесь 🙂

Комментарии:

1. Не могли бы вы обобщить ответ здесь?

Ответ №5:

Иногда это случается, когда у вас необычный код, например, у меня есть строка, принимающая входные данные от пользователей перед HttpResponse. Удалите этот код и обновите сервер. Это будет работать как шарм.