Quincy.ZH
Quincy.ZH

Reputation: 9

How to do a job every half an hour

I want to do a job every half an hour. My application is based on Flask, and running on Windows.

Now I create a task for the job, using Windows scheduler service.

I want to know if there is another way I can do cyclic tasks using Flask’s built-in functions...

Sorry for my poor English.

Upvotes: 0

Views: 1421

Answers (2)

Alexandre Carayon
Alexandre Carayon

Reputation: 38

I m not sure if this help, but I've been testing the schedule module and it's easy to use and it works well:

$pip install schedule

and this is a sample from the 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)

Hope this help =)

Upvotes: 1

bakkal
bakkal

Reputation: 55448

I want to know if there is another way I can do [periodic] tasks using Flask’s built-in functions.

Being somewhat a minimalist microframework, I don't think Flask has or ever will have a built-in feature to schedule periodic tasks.

The customary way is what you have already done, you write some Flask code that can be called as an HTTP endpoint or a script, then use a OS scheduling tool to execute it (e.g. Windows Task Scheduler or cron on UNIX/Linux)

Otherwise, Flask works well with other specialized libraries that take care of this, like Celery (periodic tasks) that takes care of those details and adds some features that may not be available otherwise.

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'

Upvotes: 1

Related Questions