Eine Möglichkeit, Hintergrundaufgaben zu erstellen, ist Sellerie. Sellerie nur pip install celery
(in einem virtualenv ist ideal wie üblich) zu installieren. Here ist komplettes Tutorial für die Grundlagen. Here ist das Repo für das Projekt Miguel baut in seinem Blogpost.
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)
Offensichtlich nur eine einfache App-Instanz, konfiguriert für die Verwendung mit Sellerie: Für die Nachwelt werde ich einige der Grundlagen hier kopieren und erklären. Die nächste Hürde ist die Einrichtung des "Message Brokers". In diesem Beispiel wird Redis als solches verwendet. Hier
ist ein Skript kümmern Herunterladen und Ausführen redis für Sie, run-redis.sh:
#!/bin/bash
if [ ! -d redis-stable/src ]; then
curl -O http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
rm redis-stable.tar.gz
fi
cd redis-stable
make
src/redis-server
Wenn Sie diese folgen linear sollten Sie jetzt ein Terminal Lauf redis haben, und Jetzt müssen Sie zwei weitere öffnen, einen, um Sellerie zu betreiben und dann einen, um den Dev-Server laufen zu lassen.
celery worker -A app.celery --loglevel=info
Dann:
python app.py
app.run()
Unter der Annahme, in app.py genannt.
schließlich auf Ihren Anwendungsfall anpassen würden Sie in app.pyAufgaben benötigen erstellen.
from celery import Celery
@app.task
def add(x, y):
return x + y
die im Hintergrund laufen lassen, wie:
add.delay(4, 4)
Das ist die jist es ist. Sie können festlegen, dass Aufgaben in der Zukunft ausgeführt werden. Sie können auch Tasks einrichten, die regelmäßig ausgeführt werden: http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html