Ich versuche, einige Aufgaben mit Sellerie zu verarbeiten, und ich habe nicht zu viel Glück. Ich betreibe Sellerie und Sellerie als Dämonen. Ich habe eine tasks.py
-Datei, die mit einer einfachen App wie folgt aussehen und Aufgabe definiert:Sellerie-Aufgaben, die nicht verarbeitet werden
from celery import Celery
app = Celery('tasks', broker='amqp://user:[email protected]:5672/vhostname')
@app.task
def process_file(f):
# do some stuff
# and log results
Und diese Datei aus einer anderen Datei referenziert wird process.py
ich für Dateiänderungen überwachen verwenden, die wie folgt aussieht:
from tasks import process_file
file_name = '/file/to/process'
result = process_file.delay(file_name)
result.get()
Und mit diesem kleinen Code ist Sellerie nicht in der Lage, Aufgaben zu sehen und zu verarbeiten. Ich kann einen ähnlichen Code in der Python-Interpreter ausführen und Sellerie verarbeitet sie:
py >>> from tasks import process_file
py >>> process_file.delay('/file/to/process')
<AsyncResult: 8af23a4e-3f26-469c-8eee-e646b9d28c7b>
Wenn ich die Aufgaben aus dem Interpreter jedoch laufen, beat.log
und worker1.log
zeigen keine Anzeichen dafür, dass die Aufgaben empfangen wurden, aber unter Verwendung von logging
I kann bestätigen, dass der Taskcode ausgeführt wurde. Es gibt auch keine offensichtlichen Fehler in den .log
Dateien. Irgendwelche Ideen, was könnte dieses Problem verursachen?
Meine /etc/default/celerybeat
wie folgt aussieht:
CELERY_BIN="/usr/local/bin/celery"
CELERYBEAT_CHDIR="/opt/dirwithpyfiles"
CELERYBEAT_OPTS="--schedule=/var/run/celery/celerybeat-schedule"
Und /etc/default/celeryd
:
CELERYD_NODES="worker1"
CELERY_BIN="/usr/local/bin/celery"
CELERYD_CHDIR="/opt/dirwithpyfiles"
CELERYD_OPTS="--time-limit=300 --concurrency=8"
CELERYD_USER="celery"
CELERYD_GROUP="celery"
CELERYD_LOG_FILE="/var/log/celery/%N.log"
CELERYD_PID_FILE="/var/run/celery/%N.pid"
CELERY_CREATE_DIRS=1