Django¶
Quickstart¶
Quick Development Start¶
/opt/Repo$ git clone <project-name>.git
/opt/Repo$ python -m venv ../Venvs/<project-name>
In VSCODE:
F1 -> "Python: Select Interpreter"
Ctrl + J, to enter terminal.
Install Django and Django REST framework into the virtual environment
pip install django djangorestframework
Create project and app:
django-admin startproject <project-name> .
django-admin startapp <app-name>
Makemigrations and migrate:
python manage.py makemigrations
python manage.py migrate
Create superuser:
python manage.py createsuperuser --email <email> --username <username>
Edit <app-name>/settings.py:
ALLOWED_HOSTS = ['*']
Run development web server:
python manage.py runserver 0:8000
Celery¶
Ensure broker/plugin installation:
sudo apt-get install rabbitmq-server
rabbitmq-plugins enable rabbitmq_management
In project virtual environment:
pip install celery django_celery_beat django-celery-results
Add ‘django_celery_results’ and ‘django_celery_beat’ to your INSTALLED_APPS setting in settings.py.
Define a Celery instance in your project’s __init__.py file:
1from celery import Celery
2from django.conf import settings
3
4app = Celery('my_project')
5
6# Load task modules from all registered Django app configs.
7app.autodiscover_tasks()
8
9# Configure the default settings for Celery
10app.conf.update(
11 broker_url=settings.CELERY_BROKER_URL,
12 result_backend=settings.CELERY_RESULT_BACKEND,
13 timezone=settings.TIME_ZONE,
14 task_track_started=True,
15)
In project settings.py:
CELERY_BROKER_URL = 'amqp://localhost'
CELERY_BROKER_URL="amqp://<user>:<password>@localhost:5672/<vhost>"
CELERY_RESULT_BACKEND = 'django-db'
Commands¶
Run celery worker:
celery --app=<app-name> worker -l info --task-events --concurrency=1
Run celery beat:
celery -A <app-name> beat -l info
Check registered celery tasks:
celery -A <app-name> inspect registered
Purge tasks:
celery --app=<app-name> call django_celery_beat.schedulers.DatabaseScheduler.purge
Call tasks from django commands:
python manage.py call_celery_task celery_tasks.tasks.fetch_instagram_data
python manage.py call_celery_task celery_tasks.tasks.fetch_instagram_posts
python manage.py call_celery_task celery_tasks.tasks.fetch_instagram_post_metrics
Flower (http://localhost:5555)
celery -A metrics --broker=amqp://localhost:5672// flower --broker_api=http://localhost:15672/api/
celery -A metrics flower --broker=amqp://<user>:<password>@localhost:5672/ --broker_api=http://<user>:<password>@localhost:15672/api/
celery -A vsports flower --logging=debug