from celery.decorators import task
from celery.task.schedules import crontab
from celery.decorators import periodic_task
from .models import *
from .scripts.fetch_data import run
@periodic_task(run_every=(crontab(hour=2)), name="update_info: Scrap https://www.gob.mx/ website every 2 hrs")
def update_info():
"""
This is a real world task
"""
print("Updating data...")
run()
@periodic_task(run_every=(crontab()), name="example_task: This is example task running every minute")
def example_task():
"""
This is a example task
"""
# do some stuff
# use models
# make requests
print("Running every minute...")
run() # just for test. May be deleted later
Django + Celery
Getting Started
This PR is a configuration for Celery & Django to run crontab or periodic jobs/tasks
Prerequisites 📋
Installing
start single RabbitMQ service with Docker or use CloudAMQP
Change
.env.example
to.env
set broker url as enviroment variable:
CLOUDAMQP_URL=amqp://guest:guest@127.0.0.1:5672/
Finally, run celery beat and worker
... Or run with Docker Compose
Additionally, we automate our project setup with Docker Compose
Open terminal and run:
this will build project and start:
Tasks
All bussines logic is in
api_covid19/tasks.py
: For more info visit: Celery periodic tasks / Crontab schedulesResults