【问题标题】:How to do a job every half an hour如何每半小时完成一份工作
【发布时间】:2016-09-29 03:06:02
【问题描述】:

我想每半小时做一次工作。我的应用程序基于 Flask,并在 Windows 上运行。

现在我使用 Windows 调度程序服务为该作业创建一个任务。

我想知道是否有另一种方法可以使用 Flask 的内置函数来执行循环任务...

对不起,我的英语不好。

【问题讨论】:

    标签: python flask scheduled-tasks


    【解决方案1】:

    我想知道是否有另一种方法可以使用 Flask 的内置函数来执行 [周期性] 任务。

    作为一个极简主义的微框架,我认为 Flask 没有或永远不会有内置功能来安排定期任务。

    习惯的方式是你已经做过的,你写一些可以被称为HTTP端点或script的Flask代码,然后使用OS调度工具来执行它(例如Windows Task Schedulercron在 UNIX/Linux 上)

    否则,Flask 可以很好地与其他专门处理此问题的库配合使用,例如 Celery (periodic tasks),它负责处理这些细节并添加一些其他情况下可能无法使用的功能。

    from datetime import timedelta
    
    CELERYBEAT_SCHEDULE = {
        'every-half-hour': {
            'task': 'tasks.your_task',
            'schedule': timedelta(minutes=30),
            'args': ('task_arg1', 'task_arg2')
        },
    }
    
    CELERY_TIMEZONE = 'UTC'
    

    【讨论】:

      【解决方案2】:

      我不确定这是否有帮助,但我一直在测试 schedule 模块,它易于使用且运行良好:

      $pip install schedule
      

      这是来自official documentation的示例:

      import schedule
      import time
      
      def job():
          print("I'm working...")
      
      schedule.every(30).minutes.do(job)
      
      while True:
          schedule.run_pending()
          time.sleep(1)
      

      希望这个帮助 =)

      【讨论】:

        猜你喜欢
        • 2014-05-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-09
        • 1970-01-01
        • 2019-12-04
        • 2021-10-23
        • 1970-01-01
        相关资源
        最近更新 更多