Если вы используете платформу тестирования, например Mocha , с библиотекой утверждений Chai , вы можете использовать равенство deep для сравнения массивов.
expect(a1).to.deep.equal(a2)
Это должно возвращать true, только если массивы имеют равные элементы в соответствующих индексах.
Так как я искал еще некоторые всесторонние ответы, я решил исследовать проблему сам подробно. Сообщите мне, неправильно понял ли я что-нибудь.
Некоторая общая рекомендация должны использовать отдельный веб-сервер для обработки медиа. Отдельным я имею в виду веб-сервер, который не выполняет Django. Этот сервер может быть, например:
Затем для Django, можно спуститься по различным путям. Вы можете также:
Подача Django через [1 128] Apache и:
mod_python
Это - конюшня и рекомендовало/хорошо зарегистрированный путь. Недостатки: использование большая память.
mod_wsgi
Из того, что я понимаю, mod_wsgi, является более новой альтернативой. Это, кажется, быстрее и легче на ресурсах.
mod_fastcgi
При использовании FastCGI Вы делегируете обслуживание Django к другому процессу. Так как mod_python включает интерпретатор Python в каждый запрос, это использует большую память. Это - способ обойти ту проблему. Также существуют некоторые проблемы безопасности.
то, Что Вы делаете, - то, что Вы запускаете свой сервер Django FastCGI в отдельном процессе, и затем настраивает апача через перезаписи для вызова этого процесса при необходимости.
Или Вы можете:
Django Подачи, не используя Apache, но с другим сервером, который поддерживает FastCGI исходно:
(Документация упоминает, что можно сделать это, если у Вас нет Apache определенными потребностями. Я предполагаю, что причина должна состоять в том, чтобы сохранить память.)
Это - сервер, который выполняет YouTube. Это кажется быстрым и простым в использовании, однако я видел отчеты о memoryleaks.
я видел, что сравнительные тесты утверждают, что этот сервер еще быстрее, чем lighttpd. Это главным образом документируется в русский язык все же.
Другая вещь, из-за ограничений в Python Ваш сервер должен работать в разветвленном режиме, не поточном.
, Таким образом, это - мое текущее исследование, но я хочу больше мнений и событий.
Мы используем nginx и FastCGI для всего нашего развертывания Django. Это главным образом, потому что мы обычно развертываемся в Slicehost и не хотим жертвовать всю нашу память к Apache. Я предполагаю, что это было бы нашим "вариантом использования".
Что касается комментариев о документации, находящейся главным образом на русском языке - я нашел, что большая часть информации о английский wiki очень полезна и точна. Этот сайт имеет демонстрационные конфигурации для Django также, от которого можно настроить собственную nginx конфигурацию.
При использовании lighthttpd можно также использовать FastCGI для обслуживания Django. Я не уверен, как скорость выдерживает сравнение с mod_wsgi, но если не изменяет память правильно, Вы извлекаете несколько пользы, которую Вы извлекли бы с mod_wsgi, который Вы не получите с mod_python. Основной, являющийся этим, можно дать каждому приложению его собственный процесс (который действительно полезен для хранения памяти различных разделенных приложений, а также для использования в своих интересах многоядерных компьютеров.
Редактирование: Только для добавления в отношении обновления о nginix, если не изменяет память, правильно снова, nginix использует "greenlets" для обработки параллелизма. Это означает, что Вы, возможно, должны немного больше стараться удостовериться, что одно приложение не съедает время всего сервера.
I’m с помощью nginx (0.6.32 взятый от Sid) с mod_wsgi. Это работает очень хорошо, хотя я, которого говорят can’t, ли it’s лучше, чем альтернативы, потому что я никогда не пробовал никого. Nginx имеет , поддержка memcached встроила, который может, возможно, взаимодействовать с Django, кэширующим промежуточное программное обеспечение (я, don’t на самом деле используют его, вместо этого я заполняю кэш вручную с помощью кэш-памяти Python и делаю недействительным его, когда изменения внесены), таким образом, удачные обращения в кэш полностью обходят Django (моя машина разработки может служить приблизительно 3 000 запросов в секунду).
протест А: nginx’ mod_wsgi
высоко не нравятся названные местоположения (он пытается передать их в SCRIPT_NAME
), таким образом, очевидный †error_page 404 = @django
’ вызовет многочисленные неясные ошибки. Я должен был исправить mod_wsgi источник для фиксации этого.
Лучшая конфигурация не так известна, я думаю. Но вот:
Два самых быстрых решения для основанного на Python веб-сервера:
необходимо изучить Google для нахождения текущей лучшей конфигурации для django (все еще в разработке).
Официально рекомендуемый способ развернуть django проект состоит в том, чтобы использовать mod_python с апачем. Это описано в документация. основное, про с этим, - то, что это - лучшее, зарегистрированное, наиболее поддерживаемое, и наиболее распространенный способ развернуться. Довод "против" - то, что это, вероятно, не является самым быстрым.
Я использую язык чероки .
Согласно их сравнительные тесты (мелкая частица соли с ними), это обрабатывает загрузку лучше и, чем Lighttpd и, чем nginx... Но это не то, почему я использую его.
я использую его потому что, если Вы тип cherokee-admin
, это запускает новый сервер, в который можно войти (с одноразовым паролем) и настроить целый сервер через красиво сделанный webmin. Это - уничтожающая функция. Это уже сохранило меня партия из времени. И это сохраняет мой сервер много ресурсов!
Что касается django, я выполняю его как потоковый процесс SCGI. Работы хорошо. Язык чероки может поддерживать его в рабочем состоянии также. Снова, очень хорошая функция.
текущий Ubuntu repo версия очень стар, таким образом, я советовал бы использовать их PPA. Удача.
Я изо всех сил пытаюсь понять все опции также. В это сообщение в блоге я нашел некоторые преимущества mod_wsgi по сравнению с mod_python объясненными.
Несколько сайтов низкого трафика на маленьком VPS делают потребление RAM первоочередной задачей, и mod_python походит на плохую опцию там. Используя lighttpd и FastCGI, мне удалось получить использование минимальной памяти простого сайта Django вниз к виртуальному и резидентному объекту на 6.5 МиБ на 58 МиБ (после того, как, перезапустив и служа единственному запросу non-RAM-heavy).
я заметил, что обновление от Python 2.4 до 2,5 на Травлении Debian увеличило место минимальной памяти процессов Python на несколько процентов. С другой стороны, 2.5's лучшее управление памятью могло бы иметь больший противоположный эффект на продолжительные процессы.
Поскольку @Barry сказал, использование документации mod_python. Я не использовал Ubuntu в качестве сервера, но имел хороший опыт с mod_wsgi на Солярисе. Можно найти документацию для mod_wsgi и Django на сайт mod_wsgi .
А быстрый обзор Ваших требований:
Будьте проще: Django рекомендует Apache и mod_wsgi (или mod_python) . Если обслуживание файлов мультимедиа является очень важной частью вашего сервиса, рассмотрите возможность использования Amazon S3 или Rackspace CloudFiles.