"Эти катастрофы конфигурации кажутся вероятным объяснением спорадических ошибок ImportErrors"
Да. Старый .pyc
файл - это катастрофа первой величины.
Мы разрабатываем на Windows, но работаем на Red Hat Linux. Случайно перемещенный файл .pyc является абсолютной загадкой для отладки, поскольку (1) он обычно запускается и (2) у него есть имя файла Windows для исходного источника, что делает ошибку трассировки абсолютно бессмысленной. Я часами смотрел на логи - на linux - задаваясь вопросом, почему файл был «C: \ This \ N \ That».
«Если в моем коде еще есть проблема, как бы я лучше ее воспроизвел?»
Перед воспроизведением ошибок постарайтесь их предотвратить.
Сначала создайте юнит-тесты, чтобы тренироваться во всем.
Начните с tests.py
тестирования Джанго . Затем разверните до unittest для всех компонентов, не относящихся к Django. Затем напишите себе скрипт «run_tests», который запускает каждый ваш тест. Запускайте это периодически. Ежедневно не достаточно часто.
Во-вторых, убедитесь, что вы используете logging . Крупный.
В-третьих, оберните все, что использует внешние ресурсы в общие блоки регистрации исключений, как это.
try:
some_external_resource_processing()
except Exception, e:
logger.exception( e )
raise
Это поможет вам точно определить проблемы с внешними ресурсами. Файлы и базы данных часто являются источником плохого поведения из-за проблем с правами доступа или доступа.
На данный момент вы предотвратили большое количество ошибок. Если вы хотите запустить циклическое нагрузочное тестирование, это тоже неплохая идея. Используйте unittest для этого.
class SomeLoadtest( unittest.TestCase ):
def test_something( self ):
self.connection = urllib2.urlopen( "localhost:8000/some/path" )
results = self.connection.read()
Это не лучший способ сделать что-то, но он показывает один подход. Возможно, вы захотите начать использовать Selenium для тестирования веб-сайта «извне» в качестве дополнения к вашим тестам юнитов.