Python Несколько пользователей одновременно присоединяются к одному файлу

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

Например:

#!/usr/bin/env python g = open("/somepath/somefile.txt", "a") new_entry = "foobar" g.write(new_entry) g.close 

Должен ли я использовать файл блокировки для этого, поскольку эта операция выглядит рискованной.

  • Фильтровать список в python получить целые числа
  • научиться python трудное упражнение 18 помочь
  • Функция Python min со списком объектов
  • Встроенная функция хеша () python
  • Сравните две даты в python и игнорируйте микросекунды
  • Ошибка импорта модуля Google Cloud Bigquery api в приложении python.
  • как сделать скрипт python self-executable
  • IOError: Нет такого файла или каталога, записывающего в файл в домашнем каталоге
  • 3 Solutions collect form web for “Python Несколько пользователей одновременно присоединяются к одному файлу”

    Вы можете использовать блокировку файлов :

     import fcntl new_entry = "foobar" with open("/somepath/somefile.txt", "a") as g: fcntl.flock(g, fcntl.LOCK_EX) g.write(new_entry) fcntl.flock(g, fcntl.LOCK_UN) 

    Обратите внимание, что в некоторых системах блокировка не нужна, если вы пишете только небольшие буферы, потому что приложения в этих системах являются атомарными .

    В зависимости от местоположения вашей платформы / файловой системы это может быть невозможно выполнить безопасным образом (например, NFS). Возможно, вы можете писать в разные файлы и впоследствии объединять результаты?

    Вы не указали, какую платформу вы используете, но вот модуль, который вы можете использовать, это кросс-платформа: блокировка файлов в Python

    Interesting Posts

    Python или Matlab для Caffe?

    Как я могу скрыть окно консоли при замораживании приложений wxPython с помощью cxFreeze?

    Как вернуть стоимость, grad как кортеж для функции fmin_cg scipy

    Разделение строк в требуемом формате, Pythonic? (с или без Regex)

    Могу ли я изменить существующий virtualenv, чтобы игнорировать пакеты глобальных сайтов? (например, –no-site-package на новом)

    Переменная JavaScript-переменная с Python

    некоторые журналы django отсутствуют, когда хост в uwsgi с несколькими процессами

    Python, tkinter: Почему этот jpeg не отображается?

    Конфигурация python setup.py для установки файлов в пользовательских каталогах

    Python – команда клавиатуры для остановки бесконечного цикла?

    Не удается установить Scipy through pip

    Преобразование HTTP-прокси в HTTPS-прокси в Twisted

    Только извлечение текста из этого элемента, а не его детей

    Пример str.isdecimal () и str.isdigit ()

    Сельдерей, создающий новое соединение для каждой задачи

    Python - лучший язык программирования в мире.