How to Schedule Cronjobs in Python
Tags: python, cronjobs
Published: 2020-12-12 22:52:11

---
title: "How to Schedule Cronjobs in Python"
published: true
description: "Cronjobs are tasks that can be run periodically, such as every five minutes, or every day at midnight, or even every Friday at noon. Cronjobs have a number of different use cases, and are widely used in many notable codebases. Many hosting servers have existing ways to set up cronjobs, but if you don't have that capability, you may want to go for a different solution. I'll explain how you would go about creating cronjobs in Python, in which a Python function, program, or system command can be run periodically, whether that be every day, every few minutes, or even"
tags: #python, #cronjobs

---

Cronjobs are tasks that can be run periodically, such as every five minutes, or every day at midnight, or even every Friday at noon.

Cronjobs have a number of different use cases, and are widely used in many notable codebases.

Many hosting servers have existing ways to set up cronjobs, but if you don't have that capability, you may want to go for a different solution.

I'll explain how you would go about creating cronjobs in Python, in which a Python function, program, or command can be run periodically, whether that be every day, every few minutes, or even every month or year.

1. Check if you have Python 3 installed:

If the following command does not yield a version number, [download Python 3 from python.org](https://www.python.org/downloads/).

```
python3 -V
```

2. Install the `schedule` package from Pypi

Run this command to install the `schedule` package:

```
pip install schedule
```

Or if you're using `pip3`:

```
pip3 install schedule
```

3. Set up and run a cronjob with the `.do` method

To schedule a cronjob, use the `.do` method combined with the `.every` method and others to choose when the cronjob should be run.

The methods for scheduling cronjobs are pretty intuitively named, and more information on them can be found on [the `schedule` package documentation](https://pypi.org/project/schedule/).

After setting up your cronjob(s), create an infinite loop to run the cronjob(s) that are scheduled.

You can also schedule multiple cronjobs if you'd like by adding them with the `.do` method, just like how the initial cronjob was created.

```python
import schedule
from time import sleep

def cronjob():
	print("Hello, World!")

# create the cronjob
schedule.every(5).minutes.do(cronjob) # runs cronjob every 5 minutes

# run the cronjob
while True:
    schedule.run_pending()
    sleep(10) # check to run the cronjob every 10 seconds
```

### More `.do` Method Examples

```python
schedule.every(15).minutes.do(cronjob) # every 15 minutes
schedule.every().hour.do(cronjob) # every 1 hour
schedule.every().day.at("07:00").do(cronjob) # every day at 7:00 AM
schedule.every(2).days.at("18:30").do(cronjob) # every other day at 6:30 PM
schedule.every().friday.at("17:00").do(cronjob) # every Friday at 5:00 PM
schedule.every().minute.at(":17").do(cronjob) # every minute at 17 seconds
schedule.every(10).seconds.do(cronjob) # every 10 seconds
```

## Conclusion

I hope this helps. I've found Python cronjobs like these particularly useful in a few of my projects. For example, I use cronjobs to periodically update data on the COVID-19 pandemic for my site [Coronavirus Live Monitor](http://covid19.xtrp.io/), and daily cronjobs are used to publish new posts for [Daily Developer Jokes](http://dailydeveloperjokes.github.io/), a project of mine which publishes programming humor every day at 8 AM (ET).

Thanks for scrolling.

*&mdash; Gabriel Romualdo, December 12, 2020*