Папка создания состояния состязания в Python

если Вы используете оракула 10/11g... Ретроспективный кадр

http://www.oracle.com/technology/deploy/availability/htdocs/Flashback_Overview.htm

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

16
задан Esteban Küber 19 October 2009 в 02:39
поделиться

3 ответа

Когда у вас часто возникают состояния гонки, EAFP (проще попросить прощения, чем разрешения) работает лучше, чем LBYL (смотрите, прежде чем прыгать)

Стратегии проверки ошибок

2
ответ дан 30 November 2019 в 21:19
поделиться

Не могли бы вы перехватить исключение, а затем проверить, существует ли файл как каталог?

2
ответ дан 30 November 2019 в 21:19
поделиться

Вместо

if not os.path.exists(self.cache_location):
    os.mkdir(self.cache_location)

вы можете сделать

try:
    os.makedirs(self.cache_location)
except OSError:
    pass

Так как в итоге вы получите ту же функциональность .

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я не знаю, как это может быть в Pythonic.


Использование SQLite3 , может быть немного излишним, но добавит много функциональности и гибкости вашему варианту использования.

Если вы приходится делать много «выбора», одновременной вставки и фильтрации, использование SQLite3 - отличная идея, поскольку он не добавляет слишком много сложности по сравнению с простыми файлами (можно утверждать, что это устраняет сложность).


Перечитывая ваш вопрос (и комментарии), я могу лучше понять вашу проблему.

Какова вероятность того, что файл может создать такое же состояние гонки?

Если он достаточно мал, я бы сделал что-то вроде:

if not os.path.isfile(self.cache_location):
    try:
        os.makedirs(self.cache_location)
    except OSError:
        pass

Кроме того, читая ваш код, я Я бы изменил

else:
    # Our target dir is already a file, or different error,
    # relay the error!
    raise OSError(e)

на

else:
    # Our target dir is already a file, or different error,
    # relay the error!
    raise

, так как это действительно то, что вы хотите, Python повторно вызывает точно такое же исключение (просто придирки) .


Еще одна вещь, может быть это может быть вам полезен (только для Unix).

11
ответ дан 30 November 2019 в 21:19
поделиться
Другие вопросы по тегам:

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