Explicación detallada del módulo de temporización de Python `APScheduler`: (Primero debe instalar la biblioteca)

APSchedulerExplicación detallada del módulo de temporización de Python : (es necesario instalarlo primero)

		pip3 install apscheduler
  1. APScheduler se basa en un marco de tareas de sincronización de Python de Quartz, que implementa todas las funciones de Quartz y es muy conveniente de usar. Proporciona tareas basadas en fechas, intervalos de tiempo fijos y tipos de crontab , y puede conservar las tareas. Basándonos en estas funciones, podemos implementar fácilmente un sistema de tareas de sincronización de Python.
  2. Los cuatro componentes de APScheduler:
  1. ** Activador ** contiene lógica de programación. Cada trabajo tiene su propio activador para determinar qué trabajo se ejecutará a continuación. A excepción de sus propios accidentes de configuración inicial, los desencadenantes son completamente apátridas.
  2. ** Almacén de trabajos ** almacena trabajos programados. El almacén de trabajos predeterminado simplemente guarda el trabajo en la memoria, y otros almacenes de trabajos guardan el trabajo en la base de datos. Los datos de un trabajo se serializan cuando se guardan en el almacenamiento de trabajos persistentes y se deserializan cuando se cargan. El planificador no puede compartir el mismo almacenamiento de trabajos.
  3. El ** ejecutor ** maneja la ejecución del trabajo, y generalmente lo hace enviando el objeto invocable especificado a un hilo o ingresando la ciudad en el trabajo. Cuando se completa el trabajo, el ejecutor notificará al programador.
  4. ** Scheduler ** es el otro componente. Por lo general, solo tiene un programador en su aplicación y el desarrollador de la aplicación generalmente no se ocupa directamente del almacenamiento de trabajos, los programadores y los activadores, por el contrario, el programador proporciona una interfaz adecuada para manejarlos. La configuración del almacenamiento de trabajos y los ejecutores se puede realizar en el programador, como agregar, modificar y eliminar trabajos.
  1. Aplicación sencilla:

    import time
    from apscheduler.schedulers.blocking import BlockingScheduler
     
    def my_job():
        print time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
     
    sched = BlockingScheduler()
    sched.add_job(my_job, 'interval', seconds=5)
    sched.start()
    

    El ejemplo anterior significa que la función my_job se ejecuta cada 5 segundos y se emite la información de la hora actual

  2. Trabajo operativo

    1. Agregar tarea

      Lo anterior es agregar un trabajo a través de add_job (), y otra forma es modificar la función a través del modificador schedule_job ()

      import time
      from apscheduler.schedulers.blocking import BlockingScheduler
      
      sched = BlockingScheduler()
      
      @sched.scheduled_job('interval', seconds = 5)
      def my_job():
          print time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))    
      sched.start()
      
    2. Quitar trabajo

      job = scheduler.add_job(myfunc, 'intercal', minutes = 2)
      job.remove()
      #如果有多个任务序列的话可以给每个任务设置ID号,可以根据ID号选择清除对象,且remove放到start前才会有效
      sched.add_job(myfunc, 'interval', minutes = 2, id = 'my_job_id')
      sched.remove_job('my_job_id')
      
    3. Pausar y reanudar operaciones

      1. Pausar el trabajo:

        apsched.job.Job.pause()
        apsched.schedulers.base.BaseScheduler.pause_job()
        
      2. Trabajo de recuperación:

        apsched.job.Job.resume()
        apsched.schedulers.base.BaseScheduler.resume_job()
        
    4. Obtener lista de trabajos

      Obtenga una lista de trabajos programados, que se puede utilizar get_jobs()para completar, y devolverá todas las instancias de trabajo. O utilice print_jobs()para generar una lista de todos los trabajos formateados. También puede usar get_job (ID de tarea) para obtener la lista de trabajos de la tarea especificada

      job = sched.add_job(my_job, 'interval', seconds=2 ,id='123')
      print sched.get_job(job_id='123')
      print sched.get_jobs()
      
    5. Cerrar programador

      De forma predeterminada, el programador esperará a que se completen todos los trabajos en ejecución y cerrará todos los programadores y el almacenamiento de trabajos. Si no quiere esperar, puede establecer la opción de espera en False.

      sched.shutdown()
      sched.shutdown(wait=False)
      
  3. Control de la operación del trabajo (disparador)

    El segundo parámetro de add_job es el disparador, que administra cómo se programa el trabajo. Puede ser fecha, intervalo o cron. Para diferentes disparadores, los parámetros correspondientes también son los mismos.

    1. programación de cronometraje (ejecutado en un momento determinado)

      (int|str) 表示参数既可以是int类型,也可以是str类型
      (datetime | str) 表示参数既可以是datetime类型,也可以是str类型
       
      year (int|str)4-digit year -(表示四位数的年份,如2008年)
      month (int|str) – month (1-12) -(表示取值范围为1-12月)
      day (int|str) – day of the (1-31) -(表示取值范围为1-31日)
      week (int|str) – ISO week (1-53) -(格里历20061231日可以写成2006-W52-7(扩展形式)或2006W527(紧凑形式))
      day_of_week (int|str) – number or name of weekday (0-6 or mon,tue,wed,thu,fri,sat,sun) - (表示一周中的第几天,既可以用0-6表示也可以用其英语缩写表示)
      hour (int|str) – hour (0-23) - (表示取值范围为0-23时)
      minute (int|str) – minute (0-59) - (表示取值范围为0-59分)
      second (int|str) – second (0-59) - (表示取值范围为0-59秒)
      start_date (datetime|str) – earliest possible date/time to trigger on (inclusive) - (表示开始时间)
      end_date (datetime|str) – latest possible date/time to trigger on (inclusive) - (表示结束时间)
      timezone (datetime.tzinfo|str) – time zone to use for the date/time calculations (defaults to scheduler timezone) -(表示时区取值)
      
      ####例子:
      #表示2017年3月22日17时19分07秒执行该程序
      sched.add_job(my_job, 'cron', year=2017,month = 03,day = 22,hour = 17,minute = 19,second = 07)
       
      #表示任务在6,7,8,11,12月份的第三个星期五的00:00,01:00,02:00,03:00 执行该程序
      sched.add_job(my_job, 'cron', month='6-8,11-12', day='3rd fri', hour='0-3')
       
      #表示从星期一到星期五5:30(AM)直到2014-05-30 00:00:00
      sched.add_job(my_job(), 'cron', day_of_week='mon-fri', hour=5, minute=30,end_date='2014-05-30')
       
      #表示每5秒执行该程序一次,相当于interval 间隔调度中seconds = 5
      sched.add_job(my_job, 'cron',second = '*/5')
      
      
    2. Programación de intervalos de intervalo (con qué frecuencia ejecutar)

      weeks (int) – number of weeks to wait
      days (int) – number of days to wait
      hours (int) – number of hours to wait
      minutes (int) – number of minutes to wait
      seconds (int) – number of seconds to wait
      start_date (datetime|str) – starting point for the interval calculation
      end_date (datetime|str) – latest possible date/time to trigger on
      timezone (datetime.tzinfo|str) – time zone to use for the date/time calculations
      
      ###例子
      #表示每隔3天17时19分07秒执行一次任务
      sched.add_job(my_job, 'interval',days  = 3,hours = 17,minutes = 19,seconds = 7)
      
    3. Fecha de programación programada (el trabajo solo se ejecutará una vez)

      run_date (datetime|str) – the date/time to run the job at  -(任务开始的时间)
      timezone (datetime.tzinfo|str) – time zone for run_date if it doesn’t have one already
      
      ###例子
      # The job will be executed on November 6th, 2009
      sched.add_job(my_job, 'date', run_date=date(2009, 11, 6), args=['text'])
      # The job will be executed on November 6th, 2009 at 16:30:05
      sched.add_job(my_job, 'date', run_date=datetime(2009, 11, 6, 16, 30, 5), args=['text'])
      

Supongo que te gusta

Origin blog.csdn.net/qq_40596572/article/details/104413604
Recomendado
Clasificación