python sqlalchemy + программа postgresql зависает

Я столкнулся со странной ситуацией. Я пишу несколько тестовых примеров для своей программы. Программа написана для работы на sqllite или postgresqul в зависимости от предпочтений. Сейчас я пишу свой тест код с использованием unittest. В основном то, что я делаю:

def setUp(self):
    """
        Reset the database before each test.
    """
    if os.path.exists(root_storage):
        shutil.rmtree(root_storage)
    reset_database()
    initialize_startup()
    self.project_service = ProjectService()
    self.structure_helper = FilesHelper()
    user = model.User("test_user", "test_pass", "test_mail@tvb.org",
                       True, "user")
    self.test_user = dao.store_entity(user) 

В setUp я удаляю все существующие папки (созданные некоторыми тестами), затем я сбросить мою базу данных (в основном отбрасывать таблицы каскадом), затем я снова инициализирую базу данных и создаю некоторые службы, которые будут использоваться для тестирования.

def tearDown(self):
    """
        Remove project folders and clean up database.
    """
    created_projects = dao.get_projects_for_user(self.test_user.id)
    for project in created_projects:
        self.structure_helper.remove_project_structure(project.name)
    reset_database()

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

Теперь все мои тесты выполняются отлично с sqllite. С postgresql я столкнулся с очень странной ситуацией: в какой-то момент выполнения, которое на самом деле отличается от запуска к запуску с небольшим запасом (например, один или два дополнительных вызова), программа просто останавливается. Я имею в виду, что не генерируется ни одна ошибка, не генерируется исключение, программа просто останавливается.

Теперь я могу думать только о том, что каким-то образом я забываю, что где-то открылось соединение, и после того, как я истекло время ожидания, что-то произошло. Но у меня МНОГО связей, поэтому, прежде чем я начну изучать весь этот код, я был бы признателен за некоторые предложения / мнения.

Что может вызвать такое поведение? С чего начать?

С уважением, Богдан

23
задан Bogdan 21 July 2011 в 15:50
поделиться