Bei der Steuerung der Warteschlange mit Python ist Sellerie ein Standard, aber [PyQS] verwendet Amazon SQS (https://github.com/spulec/PyQS). Ich habe das gefunden und versucht, es eine Weile zu benutzen. Es fiel mir schwer, weil sich das Verhalten geringfügig von README unterscheidet, aber ich bin dankbar, dass es möglich ist, eine sehr einfache Task-Warteschlange zu erstellen. ..
Die Installation ist einfach und ein Pip-Befehl ist erforderlich.
pip install pyqs
Die folgenden Umgebungsvariablen sind erforderlich.
--AWS_ACCESS_KEY_ID``
AWSS_SECRET_ACCESS_KEY ... Lese- / Schreibberechtigung für Amazon SQS --
PYTHONPATH` ... Stellen Sie das von Queue ausgeführte Python-Skript als Referenz zur Verfügung.
Importieren Sie die Dekorationsaufgabe aus pyqs und setzen Sie sie auf die Funktion, die Sie in der Warteschlange registrieren möchten.
qqq/tasks.py
from pyqs import task
@task('queue0')
def another_task(message):
print "another_task: message={}".format(message)
@task('queue0')
def send_email(subject):
print "send_email: subject={}".format(subject)
add_queue.py
from qqq.tasks import another_task, send_email
from settings import config
for i in range(0, 100):
send_email.delay(subject='hogehoge')
another_task.delay(message='hogehogehoge')
run_queue.sh
#! /bin/bash
export PYTHONPATH=`pwd`
export QUEUE='queue0'
pyqs $QUEUE
Laut Githubs README sollte der Name der Warteschlange "queue0.tasks.send_email" oder "queue.tasks.another_task" sein. Das tatsächliche SQS erlaubt jedoch keine Punkte im Warteschlangennamen, sodass die im @ task-Dekorator deklarierte Warteschlange 0 der Warteschlangenname ist. Ich habe die Quelle ungefähr 2 Stunden lang verfolgt, bevor ich das verstanden habe.
Es ist attraktiv, sofort eine Task-Warteschlange erstellen zu können, wenn Sie Zugriff auf Amazon SQS haben, ohne selbst einen Nachrichtenbroker einrichten zu müssen. Ich bin auch dankbar, dass SQS fast kostenlos ist.
Github
Die Quelle ist hier
Recommended Posts