Огляд скриптовых мов - Python
Приклади збереження даних Приклади збереження данихУ порівнянні з pickle або YAML для ініціалізації роботи з ZODB потрібно написати на парі рядків програмного коду більше, але як тільки сховище...
Контактні дані Київ, Мясницкая вул., 35
Телефон: +38 (044) 997 - 93 - 19
Факс: +38 (044) 999 - 99 - 91
Планування запуску процесів Python
Отже, три основних ознаки демона: виконання у фоновому режимі, відсутність зв'язку із процесом, що запустив його, і відсутність керуючого термінала. Процес, запущений у фоновому режимі за допомогою механізму керування завданнями, відповідає тільки першій вимозі. Нижче приводиться фрагмент програмного коду, у якому визначається функція daemonize. Вона перетворює зухвалий її процес у демона - у тому розумінні, у якому говорилося в попередньому параграфі.

Ця функція була взята з рецепта "Forking a Daemon Process on Unix", що приводиться в другому виданні книги Дэвида Ашера (David Asher) "Python Cookbook" (O'Reilly) на сторінках 388-389. Цей програмний код досить близько треба рекомендаціям, які пропонує Ричард Стивене (Richard Stevens) у своїй книзі "UNIX Network Programming: The Sockets Networking API" (O'Reilly) у якості "правильного" способу створення демона. Для тих, хто не знаком із книгою Стивенса, помітимо, що вона звичайно розглядається як довідник по мережному програмуванню, а також як посібник зі створення демонів в UNIX.

Після створення копії батьківський процес може завершити свою роботу. Для цього перевіряється ідентифікатор процесу pid після розгалуження. Якщо ідентифікатор представлений позитивним числом, це означає, що виконується батьківський процес. Якщо ви ніколи не програмували розгалуження процесів за допомогою функції fork, це може здатися вам дивним. Після повернення з функції os.fork у системі з'являється дві копії того самого працюючого процесу.

Обидві вони перевіряють код, що повертається функцією fork, що у дочірньому процесі буде мати значення 0, а в батьківському процесі - відповідати ідентифікатору процесу. Будь-яке ненульове значення вертається тільки батьківському процесу, що повинен завершити роботу. Якщо тут виникло виключення, процес просто завершується. Якщо цей сценарій викликається з інтерактивної командної оболонки (такий як Bash), ви в цей момент повернетеся в рядок запрошення до уведення, тому що той процес, що ви запускали, тільки що завершив роботу. Але дочірній процес продовжує свою роботу.

Потім процес змінює робочий каталог на / (os.chdir("/"'), установлює маску в значення 0 (os. umask(O)) і створює новий сеанс (os. set-sid). Зміна каталогу на / переводить процес демона в каталог, що завжди існує. Додаткова перевага, що дає операція переходу в каталог /, укладається в тім, що долгожи-вущий процес не буде перешкоджати можливості отмонтировать файлову систему, якщо вийшло, що він був запущений з каталогу у файловій системі, що ви побажаєте отмонтировать.
Служба аутентификации Служба аутентификацииОдне із самих удалих визначень, з якими нам доводилося зіштовхуватися, приводиться у Википедии: "прикладний протокол, що дозволяє звертатися до служби каталогів, що працює поверх протоколу TCP/IP". Як приклад...
Веб додатка Веб додаткаОдне з поліпшень, яке можна було б внести в цей додаток, -це реалізувати сортування в порядку, зворотному поточний. Зробити це досить просто, але ми залишимо реалізацію цієї можливості читачам. Як ще одне поліпшення...
Запуск сценарію Запуск сценаріюЦе в точності відповідає нашим очікуванням. Тепер спочатку спробуємо запустити сценарій, що додає новий запис, а потім знову запустимо сценарій, що витягає дані. Цей приклад ідентичний попередньому прикладу, де використовувався метод store,...
Створення звітів Створення звітівКрім того, ми могли б розширити цей сценарій і відшукувати запису з обсягом використання 80 відсотків, 70 відсотків і видавати попередження по досягненні цих рівнів. Такий сценарій легко можна було б об'єднати, наприклад, с...
 
(c) Copyright