Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Центр помощи
  • » Как реализовать поочерёдный доступ к файлу разными экземплярами процесса? [RSS Feed]

#1 Май 28, 2014 17:20:27

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

Как реализовать поочерёдный доступ к файлу разными экземплярами процесса?

Здравствуйте. Имеется скрипт, который берет из текстового файла некий параметр, изменяет его затем и делает свою работу. Запусков скрипта может быть много, соответсвенно, надо чтобы они гарантированно не смогли попадать или испортить файл. То есть, чтобы следующий экземпляр ждал, пока файл освободится, а тогда с ним работал. Как это можно сделать?
Я покопал немного, и вроде это должно решаться через файловые дескрипторы, но вот ещё не могу понять как.



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Отредактировано Master_Sergius (Май 28, 2014 18:24:25)

Офлайн

#2 Май 28, 2014 20:38:19

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Как реализовать поочерёдный доступ к файлу разными экземплярами процесса?

Master_Sergius
берет из текстового файла некий параметр, изменяет его затем и делает свою работу
Так он его кладет обратно в файл?.
Судя по всему да.

На мой вкус это неправильная архитектора приложения. Опишите подробнее задачу. тогда можно будет сказать определеннее.
Дескрипторы все равно надо передавать между приложениями, поэтому в любом случае interprocess communication :( и игра с дескрипторами теряет всякий смысл.

p.s.
Много раз видел приложения такого вида. И всегда были проблемы. Авторы не могли добиться устойчивой работы постоянно или дедлоки или ошибки записи данных. Не работали системы контроля версий. Очень трудно было модифицировать алгоритмы и т.п.



Офлайн

#3 Май 28, 2014 23:07:20

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9885
Репутация: +  853  -
Профиль   Отправить e-mail  

Как реализовать поочерёдный доступ к файлу разными экземплярами процесса?

Master_Sergius
Как это можно сделать?
Можно снаружи временный файл создать, существование которого будет проверяться. Это так процессы в лине делают, когда создают .pid файлы.



Офлайн

#4 Май 29, 2014 07:45:25

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Как реализовать поочерёдный доступ к файлу разными экземплярами процесса?

py.user.next
Можно снаружи временный файл создать
Думаю лучше велосипеды не изобретать:
https://pypi.python.org/pypi/lockfile
Но в любом случае это уже пошли разные методы interprocess communication.



Офлайн

#5 Май 29, 2014 11:10:01

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

Как реализовать поочерёдный доступ к файлу разными экземплярами процесса?

Ну вот, смотрите, что Я пытаюсь сделать:
имею свою утилитку, которая выдает меседж в окошке (через Tkinter), подобно уведомлениям всяким (очень похоже на notify-osd в убунте)

Естественно, если один меседж уже появился, и в это время другой должен появиться, то тот другой должен быть смещен. Например, первое появляется на справа сверху, на расстоянии 100 пикселей, то второй, должен опуститься ещё на высоту первого меседжа + некое расстояние между ними. Потом так же третий меседж если что и так далее. Итого, получается, мне надо хранить где-то текущий отступ.

Или же, у вас есть другие предложения?

п.с. посмотрел описание той оригинальной утилиты notify-osd, там управляющий демон решает все проблемы



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Отредактировано Master_Sergius (Май 29, 2014 12:50:19)

Офлайн

#6 Май 29, 2014 22:22:47

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Как реализовать поочерёдный доступ к файлу разными экземплярами процесса?

Master_Sergius
Или же, у вас есть другие предложения?

1. Ну например одно сообщение один файл. Имя например определяется временем создания. При создании нового сообщения смотрите все файлы и размещаете новое сообщение сообразно.
2. Если не нужно долговременное сохранение состояний - храните данные в запущенном демоне как вы уже посмотрели.
3. Классика это использование СУБД.



Офлайн

#7 Май 29, 2014 23:43:21

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Как реализовать поочерёдный доступ к файлу разными экземплярами процесса?

Master_Sergius
я прям вижу здесь sqlite и, как следствие, отсутствие проблем.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#8 Май 29, 2014 23:44:35

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Как реализовать поочерёдный доступ к файлу разными экземплярами процесса?

JOHN_16
Аналогичное решение посоветовал Master_Sergius в личной переписке по скайпу…

Офлайн

#9 Май 30, 2014 10:19:50

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

Как реализовать поочерёдный доступ к файлу разными экземплярами процесса?

Всем большое спасибо, уже работаю над интеграцией с SQLite



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Офлайн

  • Начало
  • » Центр помощи
  • » Как реализовать поочерёдный доступ к файлу разными экземплярами процесса?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version