Execução de script python com cron apenas se não estiver executando

Preciso executar um script python (job.py) a cada minuto. Este script não deve ser iniciado se já estiver em execução. O tempo de execução pode variar entre 10 segundos e várias hora

Então eu coloquei no meu crontab:

* * * * * root cd /home/lorenzo/cron && python -u job.py 1>> /var/log/job/log 2>> /var/log/job/err

Para evitar iniciar o script quando ele já estiver em execução, uso flock ().

Este é o script (job.py):

import fcntl
import time
import sys

def doIncrediblyImportantThings ():
    for i in range (100):
        sys.stdout.write ('[%s] %d.\n' % (time.strftime ('%c'), i) )
        time.sleep (1)

if __name__ == '__main__':
    f = open ('lock', 'w')
    try: fcntl.lockf (f, fcntl.LOCK_EX | fcntl.LOCK_NB)
    except:
        sys.stderr.write ('[%s] Script already running.\n' % time.strftime ('%c') )
        sys.exit (-1)
    doIncrediblyImportantThings ()

sta abordagem parece funciona

Há algo que me falta? Há algum problema que eu possa encontrar usando essa abordagem?

Existem formas mais recomendadas ou "apropriadas" de atingir esse comportament

Agradeço qualquer sugestão.

questionAnswers(4)

yourAnswerToTheQuestion