(5 MIN READ)

Job Scheduling with Flask: Simplify Background Task Automation

Simplify background task automation by using ActiveBatch for job scheduling with Flask. Learn how to use APScheduler and cron jobs to create tasks in Flask.

Written by . Last Updated:

Many modern web applications have tasks periodically running in the background, such as important third-party data or removing revoked tokens from a database when they expire. Implementing a task to run in the background at regular intervals can be complex. 

There are a variety of options for teams seeking to run jobs using a Flask app, including APScheduler and cron job scheduling. Better yet is the robust cross-platform job scheduler offered by ActiveBatch, enabling teams to automate processes with unified enterprise task scheduling. 

What is the Flask Python framework? 

Flask, a Python web framework tailored for crafting web applications, embodies a minimalist approach that abstains from imposing rigid patterns or architectural constraints. This liberates developers to architect their codebase precisely as they envision.

With its straightforward API and compact Python codebase, Flask facilitates comprehension and expansion with ease. Its modular design fosters seamless integration of additional functionalities as required. Moreover, Flask boasts extensive extension support, encompassing vital features like database integration, authentication mechanisms and robust testing capabilities.

APScheduler for Flask Job Scheduling

APScheduler is a Python library for executing a scheduled task at a specific time or interval. It provides a simple and powerful way for scheduled jobs in a Python application, allowing for task automation.

Flask-APScheduler is a Flask application extension to support APScheduler. This tool loads scheduler configuration and job definitions from Flask config, and allows users to specify the hostname that the scheduler will run on. 

Additionally, the Flask-APScheduler provides a REST API to manage scheduled jobs and authentication for the REST API. Flask-APScheduler and related docs can be found on GitHub and installed using the Python Package Index (PyPi). 

Scheduling a Cron Job with Flask 

This tutorial shows how to use APScheduler with Flask to schedule a cron job that runs daily at a specific time. The BackgroundScheduler class from APScheduler will run the job in the background, and the CronTrigger class will specify the schedule. 

from flask import Flask
from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.triggers.cron import CronTrigger

app = Flask(__name__)
scheduler = BackgroundScheduler()

def my_cron_job():
    # Code to be executed by the cron job
    print('Hello from my cron job!')

# Schedule the cron job to run every day at 9:30 AM
scheduler.add_job(
    func=my_cron_job,
    trigger=CronTrigger(hour=9, minute=30),
)

# Start the scheduler
scheduler.start()

if __name__ == '__main__':
    app.run()

ActiveBatch Flask Job Scheduler 

Teams can use ActiveBatch for Flask job scheduling across platforms for effective workload automation. Teams can use the intuitive drag-and-drop interface to quickly build and automate workflows to connect data and dependencies from a variety of tools and sources.

ActiveBatch offers the ability to streamline dependency management with customizable monitoring and notifications. With template reporting, teams can gain better transparency into job templates and objects. 

There are numerous integration opportunities, including support for all major operating systems like Windows and Linux. Connect with multiple backend databases like SQL server, Azure SQL, and Oracle DBs.

Batch scheduling features include real-time monitoring, date/time scheduling, load balancing, and more. Additionally, ActiveBatch offers advanced scheduling for scripts including Python script, JavaScript, and more.


Frequently Asked Questions

Can Flask be used for deployment?

Yes, Flask can be used for deployment. Flask can be used to create RESTful APIs, web applications, and microservices that can be deployed on a variety of platforms, including on-premise servers and cloud-based platforms like Amazon Web Services (AWS), Microsoft Azure, and Google Cloud Platform (GCP).

Flask can be used for deployment in a variety of use cases. For example, Flask web apps can be deployed as stand-alone applications using a WSGI server like Gunicorn or uWSGI, or they can be deployed as Docker containers.

Flask applications can also be deployed on cloud platforms like Heroku or Google App Engine, which provide easy-to-use deployment tools to automatically scale up or down based on traffic to the application.

ActiveBatch offers enterprise batch scheduling software for managing critical business and IT jobs.

What are some alternatives to Flask?

There are a number of Flask alternatives to choose from for building web apps and APIs with Python. Aside from Flask, developers may be interested in the following options: 

• Django
• Pyramid
• Tornado
• Bottle
• CherryPy 

Discover why ActiveBatch’s job scheduling software is preferred by enterprise teams to other alternatives.

How can I use Flask with Celery?

Flask and Celery are two popular Python libraries that can be used together to build web apps requiring background task processing. Flask is a lightweight web framework for Python, while Celery is a distributed task queue that allows background tasks to run asynchronously.

To use Flask with Celery, take the following steps:

1. Install Flask and Celery using pip. Run the following command:
pip install Flask Celery

2. Define the Flask application by creating a Flask app called app.py and define the task to run in the background using Celery.

from flask import Flask
from celery import Celery
app = Flask(__name__)
app.config['CELERY_BROKER_URL'] = 'redis://localhost:6379/0'
app.config['CELERY_RESULT_BACKEND'] = 'redis://localhost:6379/0'
celery = Celery(app.name, broker=app.config['CELERY_BROKER_URL'])
celery.conf.update(app.config)
@celery.task
def long_running_task():
    # your long running task code here
    pass


@app.route('/start_task')
def start_task():
    long_running_task.delay()
    return 'Task started'

3. Run the Celery worker in a separate terminal window using the following command:
celery -A app.celery worker --loglevel=info

4. Start the Flask app and serve the web page by running the following command:
python app.py

5. Finally, start the task by navigating to https://localhost:5000/start_task in a web browser. This will start the long_running_task function as a background task in Celery.

Learn about ActiveBatch’s advanced script management for Python, Javascript, and more