[PYTHON] Notes de céleri sur Django


Installation

$ pip install django
$ pip install django-celery
$ pip freeze
amqp==1.4.8
anyjson==0.3.3
billiard==3.3.0.22
celery==3.1.19
Django==1.9
django-celery==3.1.17
kombu==3.0.30
pytz==2015.7
wheel==0.24.0

Paramètres Django

1 Créer un projet

$ django-admin.py startproject proj
$ python manage.py startapp sampleapp
/c/dev/projects/proj

Vérification

|--manage.py
|--proj
| |--__init__.py
| |--settings.py
| |--urls.py
| |--wsgi.py
|--sampleapp
| |--__init__.py
| |--admin.py
| |--apps.py
| |--migrations
| | |--__init__.py
| |--models.py
| |--tests.py
| |--views.py

2 settings

/proj/settings.py

INSTALLED_APPS = (

    'djcelery',
    'kombu.transport.django',
    'sampleapp',
)

# Celery Setting
import djcelery
djcelery.setup_loader()
BROKER_URL = 'django://'
# Tasks will be executed asynchronously.
CELERY_ALWAYS_EAGER = False

/proj/celery.py

from __future__ import absolute_import

import os

from celery import Celery

# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings')

from django.conf import settings  # noqa

app = Celery('proj')

# Using a string here means the worker will not have to
# pickle the object when using Windows.
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

app.conf.update(
    CELERY_RESULT_BACKEND='djcelery.backends.database:DatabaseBackend',
)

@app.task(bind=True)
def debug_task(self):
    print('Request: {0!r}'.format(self.request))

/proj/init.py

from __future__ import absolute_import

# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from .celery import app as celery_app  # noqa

3 Mise en œuvre des tâches

/sampleapp/tasks.py

import time

from celery import task

@task
def add(a, b):
    time.sleep(10)
    return a + b

4 Initialisation DB

$  python manage.py makemigrations djcelery
Migrations for 'djcelery':
  0002_auto_20151211_1830.py:
    - Alter field status on taskmeta
    - Alter field state on taskstate

$  python manage.py migrate djcelery
Operations to perform:
  Apply all migrations: djcelery
Running migrations:
  Rendering model states... DONE
  Applying djcelery.0002_auto_20151211_1830... OK

Courir

1 Commencer le céleri

$ celery -A proj worker -l info -c 1

2 Exécuter depuis le shell Django

$  python manage.py shell
(InteractiveConsole)
>>> from sampleapp.tasks import add
>>> result = add.delay(1, 2)
>>> result.ready()
False
>>> result.ready()  #10 secondes se sont écoulées
True
>>> result.get()
3

Recommended Posts

Notes de céleri sur Django
[Django] Remarques sur l'utilisation de django-debug-toolbar
Mémo Django
Mémo Django
Notes de [Django] as_view ()
Notes sur Flask
Remarques sur la création de fichiers statiques avec Django
Remarques sur les réseaux de neurones
Exécutez Django sur PythonAnywhere
Remarques sur l'installation de PycURL
Hello World avec Django
Remarques sur l'utilisation d'Alembic
Remarques sur les fonctions de la famille SciPy.linalg
Notes diverses sur le déploiement de l'application django sur Heroku
Remarques sur tf.function et traçage
Remarques sur l'installation de dlib sur Mac
Notes sur le module sqlite3 de python
Remarques sur les * args et ** kargs
Remarques sur la définition des slots PySide (2)
Notes sur pyenv et Atom
Précautions lors de la définition des emplacements pour PySide
[Python] Notes sur l'analyse des données
Remarques sur l'optimisation à l'aide de Pytorch
Remarques sur l'installation de Python sur votre Mac
Développement de l'environnement Django sur Windows 10
Installez Django sur Mac
Remarques sur l'installation de pipenv sur votre Mac
Hello World (débutant) avec Django
Remarques sur l'installation d'Anaconda 3 sur Windows
[Django] Pratique de la structure des répertoires + notes
Remarques sur imshow () d'OpenCV
Remarques sur l'installation de Python sur CentOS
Notes de lancement pour les applications Django existantes
Remarques sur la gestion des packages avec conda
Remarques sur l'utilisation de MeCab depuis Python
Remarques sur l'utilisation de pywinauto
Remarques sur l'utilisation de la post-réception et de la post-fusion
Déployer l'application Django sur Heroku
Django
Remarques sur l'utilisation des featuretools
python + django + scikit-learn + mecab (1) avec heroku
Implémenter l'application Django sur Hy
Essayez Ajax sur la page Django
python + django + scikit-learn + mecab (2) avec heroku
Page DJango publiée sur heroku: Practice
Remarques sur l'installation de Python à l'aide de PyEnv
Django + v (irtual) env + céleri + superviseur
Notes sur l'utilisation de rstrip avec python.
Remarques sur l'accès à dashDB à partir de python
céleri
Mettre à jour les applications exécutées sur Django 1.7 vers Django 1.8
[Note] Exécutez Django sur Amazon Linux 2
Blog Django sur heroku: implémentation de la connexion
Remarques sur l'utilisation de matplotlib sur le serveur
Remarques sur la rédaction de requirements.txt