Django, mod_wsgi и apache2.4 = проблемы

Учитывая, что это задокументированное поведение, и нужно либо избегать таких функций, либо защищать его таким образом, чтобы защитить любой подход. Для таких вещей я бы рекомендовал написать «бедный человек»; с таким детектором lint, вы можете пойти о восстановлении здравомыслия. Кроме того, для обнаружения ворса существует несколько подходов к предотвращению сбоев в полярных орбитах Марса, некоторые из них независимы друг от друга, другие зависят:

  1. Установите политику & amp; строить альтернативы. Во-первых, для всех функций, которые, как вы знаете, вызывают проблемы, либо решите, что вы их не будете использовать, либо напишите новую функцию-оболочку, которая будет вести себя так, как предполагалось, и установит желаемый вами параметр часового пояса. Затем убедитесь, что вы используете эту специальную оболочку, а не базовую функцию.
  2. Статический анализ Напишите функцию поиска, используя ваш любимый редактор (например, как макрос), используя сценарий оболочки и amp; функции GNU find и grep или каким-либо другим способом (например, grep в R), чтобы найти те конкретные функции, которые вызывают проблемы. Когда обнаружено, удалите или используйте защитный метод кодирования (например, обертка в # 1).
  3. Тестирование Использование модульных тестов, например. Runit или testthat, разработайте тесты, которые гарантируют сохранение свойств часового пояса при использовании ваших функций или пакета. Каждый раз, когда появляется новая ошибка, создайте новый тест, чтобы убедиться, что ошибка не появляется снова в выпущенных версиях.
  4. Проверка слабых типов. Вы также можете включать тесты на протяжении всего кода, которые проверяют, указан ли часовой пояс. Лучше иметь собственную функцию для этого теста, а не писать блок кода, который воспроизводится повсюду. Таким образом, вы можете в конечном итоге расширить проверку, включив другие типы проверок, такие как сохранение часового пояса и тесты на то, работают ли операции над двумя или несколькими объектами разницы во временных часах (возможно, они позволяют это, возможно, они не ).
  5. Отметить все на один TZ. Также известен как Indiana-be-damned . Сохранение различных политик в отношении часовых поясов - это тяжелая работа и, по существу, является трением в работе с временными данными. Просто перейдите к одному TZ (UTC), а затем отпустите что-нибудь из местного. Если у вас локальная регулярность, которая является инвариантной для DST, тогда обращайтесь к ней после преобразования из UTC.

Я делаю все # 1-4 для других вопросов, но, так же, как они легко адаптируются к проверке часового пояса, они довольно многократно используются для многих задач Орбита Марса. Я делаю именно это, чтобы избежать кодирования следующего такого Орбита Марса. (Это был дорогой урок для всех нас, работающих с числовыми данными.:))

1
задан I'm stupid 23 January 2019 в 02:50
поделиться