Efficient Python Daemon

后端 未结 3 1683
暗喜
暗喜 2021-01-30 00:15

I was curious how you can run a python script in the background, repeating a task every 60 seconds. I know you can put something in the background using &, is that effeictiv

3条回答
  •  抹茶落季
    2021-01-30 00:54

    Using & in the shell is probably the dead simplest way as Greg described.

    If you really want to create a powerful Daemon though, you will need to look into the os.fork() command.

    The example from Wikipedia:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import os, time
    
    def createDaemon():
      """ 
          This function create a service/Daemon that will execute a det. task
      """
    
      try:
        # Store the Fork PID
        pid = os.fork()
    
        if pid > 0:
          print 'PID: %d' % pid
          os._exit(0)
    
      except OSError, error:
        print 'Unable to fork. Error: %d (%s)' % (error.errno, error.strerror)
        os._exit(1)
    
      doTask()
    
    def doTask():
      """ 
          This function create a task that will be a daemon
      """
    
      # Open the file in write mode
      file = open('/tmp/tarefa.log', 'w')
    
      # Start the write
      while True:
        print >> file, time.ctime()
        file.flush()
        time.sleep(2)
    
      # Close the file
      file.close()
    
    if __name__ == '__main__':
    
      # Create the Daemon
      createDaemon()
    

    And then you could put whatever task you needed inside the doTask() block.

    You wouldn't need to launch this using &, and it would allow you to customize the execution a little further.

提交回复
热议问题