2010-10-22 19 views
6

Qualcuno sa di un funzionante e ben documentato implementazione di un demone che utilizza python? Si prega di inviare un link qui se si conosce un progetto che si adatta a questi due requisiti.Implementazione del demone in Python

+0

lavoro env? unix? –

+0

env è ubuntu 10.10, python 2.6 – RyanBrady

risposta

4

tre opzioni riesco a pensare di-

  1. Fai un job cron che chiama lo script. Cron è un nome comune per un daemon GNU/Linux che avvia periodicamente gli script in base a una pianificazione impostata. Si aggiunge lo script in un crontab o si posiziona un link simbolico in una directory speciale e il daemon gestisce il lavoro di avviarlo in background. Puoi leggere di più su wikipedia. C'è una varietà di diversi demoni cron, ma il tuo sistema GNU/Linux dovrebbe averlo già installato.
  2. Approccio Pythonic (una libreria, ad esempio) per consentire allo script di eseguire daemonize. Sì, richiederà un semplice ciclo di eventi (dove i tuoi eventi sono attivati ​​dal timer, possibilmente, forniti dalla funzione sleep). Ecco quello che raccomando & uso - A simple unix/linux daemon in Python
  3. Utilizzare il modulo python multiprocessing. Il nocciolo duro di provare a biforcarsi un processo ecc. Sono nascosti in questa implementazione. È abbastanza pulito.

Non consiglierei 2 o 3 'coz in effetti stai ripetendo la funzionalità di cron. Il paradigma del sistema Linux consiste nel consentire a più strumenti semplici di interagire e risolvere i problemi. A meno che non ci siano altri motivi per cui dovresti creare un demone (oltre a scattare periodicamente), scegli l'altro approccio.

Inoltre, se si utilizza daemonize con un ciclo e si verifica un arresto anomalo, assicurarsi di disporre di registri che consentano di eseguire il debug. Definisci anche un modo in modo che lo script ricominci. Mentre se lo script viene aggiunto come cron job, si innescherà di nuovo nell'intervallo di tempo che hai mantenuto.

+0

Ho provato il n. 2 senza successo. è come una volta che il demone si biforca, non posso più fare riferimento al mio progetto di Django. pensando che sia un problema di percorso. vedi http://stackoverflow.com/questions/3992175/python-import-module-results-in-nameerror – RyanBrady

+0

hai seguito l'esempio di codice nel link che ho dato? Funziona bene per me. –

+0

sì, l'ho seguito. scaricato il suo daemon.py, sottoclassato. quando provo ad importare il mio progetto django fallisce. – RyanBrady

Problemi correlati