Как я могу сказать, работает ли мое приложение Django на сервере разработки или нет?

Я использовал VMware с 2002. Мое первое использование должно было создать среду разработки в госте VM, затем копировать его для моих товарищей по команде. Когда это прибыло время для модернизации оборудования, я переключился на свой новый рабочий стол приблизительно за час (установите VMware, скопируйте VM).

я постоянно использую VMware, на рабочих столах, на ноутбуках, и на серверах. Я использую их для разработки, тестирования и производства. Я попытался играть в игры в VM, но большинство игр просто не сокращает его (и VMware заявляет так, но я попробовал так или иначе). Однако новейшие версии VMware Workstation просто могли бы играть в несколько игр хорошо.

мне особенно нравится VMware на моем ноутбуке, и мне действительно нравится использовать его для Ubuntu Linux. Я нахожу, что он лучше всего до сих пор использует Windows (2000 Pro SP4 или XP) для хоста ОС из-за превосходящих драйверов устройств. Однако я предпочитаю на самом деле работать над Ubuntu для своей разработки, но это работает отлично в VM. Я установил Ubuntu непосредственно на различных аппаратных средствах, но до сих пор не был удовлетворен достаточно для оставления его в течение больше, чем нескольких месяцев прежде, чем вернуться к Windows снова.

Однако мой ноутбук действительно запускает Ubuntu приятно, и я только вернулся назад к Windows XP, потому что я хочу загрузить eSATA карту, которая предоставит мне высокоэффективный доступ к внешнему жесткому диску, чтобы... выполнить VMs!!! Я еще еще не сделал той установки из-за отвлекающих факторов на работе.

Разговор о работе... Я "получил" три старых осиротевших рабочих стола, что я превращаюсь в хосты VM. Я собираюсь делать попытку загружающегося VMware ESXI, хотя я только что закончил загружаться два с Windows 2000 Pro SP4 и VMware Server 1.0.8. Я управляю группой разработчиков, и я, прежде всего, нацелен на эти VMs для сред разработки, так как наша компания наносит вред нашим основным рабочим столам/ноутбукам слишком много для реальной работы.

Напиток Koolaid!!! VMware является потрясающим, и существует много других хороших опций VM также!

С наилучшими пожеланиями.

РЕДАКТИРОВАНИЕ: больше положительных героев...

, В частности, выезд VMware ESXI, VMware Server и Ubuntu JeOS. Вкусный материал!!!

51
задан Imran 17 August 2009 в 17:10
поделиться

5 ответов

server = request.META.get('wsgi.file_wrapper', None)
if server is not None and server.__module__ == 'django.core.servers.basehttp':
    print('inside dev')

Конечно, wsgi.file_wrapper может быть установлен в META и иметь класс из модуля с именем django.core.servers.basehttp крайнее совпадение в другой серверной среде, но я надеюсь, что это поможет вам.

Между прочим, я обнаружил это, создав синтаксически недопустимый шаблон во время работы на сервере разработки, и искал интересные вещи в Traceback и Request information , так что я просто редактирую свой ответ, чтобы подтвердить идеи Нейта.

20
ответ дан 7 November 2019 в 10:04
поделиться

settings.DEBUG может иметь значение True и работать под Apache или другим сервером, не предназначенным для разработки. Он все равно будет работать. Насколько я могу судить, в среде выполнения нет ничего, кроме проверки pid и сравнения с pid в ОС, которые предоставят вам эту информацию.

2
ответ дан 7 November 2019 в 10:04
поделиться

Использование settings.DEBUG - самый элегантный способ AFAICS, поскольку он также иногда используется в базе кода Django.

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

Для этого я проверяю путь к settings.py (в settings.py), чтобы определить, на каком сервере запущен проект:

if __file__ == "path to settings.py in my development machine":
    DEBUG = True
elif __file__ in [paths of production servers]:
    DEBUG = False
else:
    raise WhereTheHellIsThisServedException()

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

6
ответ дан 7 November 2019 в 10:04
поделиться

Обычно я устанавливаю переменную с именем среда и установите ее на «РАЗРАБОТКА», «СТАДИЯ» или «ПРОИЗВОДСТВО». Затем в файле настроек я могу добавить базовую логику для изменения используемых настроек в зависимости от среды.

РЕДАКТИРОВАТЬ: Кроме того, вы можете просто использовать эту логику для включения различных settings.py файлы, которые переопределяют базовые настройки. Например:

if environment == "DEBUG":
    from debugsettings import *
14
ответ дан 7 November 2019 в 10:04
поделиться

Одно из различий между средой разработки и развертывания заключается в том, на каком сервере она работает. Что именно будет отличаться, будет зависеть от вашей среды разработки и развертывания.

Зная ваши собственные среды разработки и развертывания, можно использовать переменные HTTP-запроса для различения между ними. Посмотрите на переменные запроса вроде request.META.HTTP_HOST , request.META.SERVER_NAME и request.META.SERVER_PORT и сравните их в эти две среды.

Бьюсь об заклад, вы найдете что-то совершенно очевидное, что отличается и может использоваться для определения вашей среды разработки. Выполните тест в settings.py и установите переменную, которую можно использовать в другом месте.

2
ответ дан 7 November 2019 в 10:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: