Python темы и демоны - PullRequest
       20

Python темы и демоны

1 голос
/ 11 марта 2011

Я работаю с демонами в python, используя рецепт Сандера .

Пока все прошло нормально, но я должен внести некоторые изменения, которые сверлят мой мозг. Дело в том:

Образ жизни демона Сандера создает новый экземпляр объекта каждый раз, когда вы просите его. Пример:

[prompt]> python my_daemon.py start
[prompt]> python my_daemon.py check_whatever (new instance of my_daemon.py is created, but it looks for pid and finally gets the first one.)

Затем, ища pid, использованный для создания более старого экземпляра, вы можете получить к нему доступ и управлять им.

Ситуация такова: этот демон порождает два потока, которые продолжают работать после того, как демон выполнил команду запуска и готов принять другой (помните, новый экземпляр создан). Я хотел бы получить доступ к этим потокам в другой команде, но я не нашел пути (если он есть).
Насколько я исследовал, с помощью pid вы можете только убить или проверить демона, но не знаете, возможно ли получить объекты (т.е. потоки), созданные этим экземпляром.

Открытые вопросы :

-Если я могу восстановить процесс из его pid, могу ли я также получить доступ к его объектам?

- Нужно ли преобразовывать эти потоки в подпроцесс, чтобы сохранить их живыми после того, как основной поток завершил (или все еще ожидает)?

Ответы [ 2 ]

0 голосов
/ 11 марта 2011

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

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

0 голосов
/ 11 марта 2011

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

Что касается доступа по pid, я не уверен, возможно ли это, это определенно не для потоков под окнами, так как они не имеют своего собственного pid; мне кажется намного проще держать канал открытым для ваших новых тем.

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

...