Próbuję przetworzyć niektóre zadania przy użyciu selera, a nie mam zbyt dużo szczęścia. Prowadzę selerię i celerybeat jako demony. Mam plik tasks.py
które wyglądają jak to z prostej aplikacji i zadania zdefiniowane:Zadania selera nie są przetwarzane
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
I plik ten jest określany z innego pliku process.py
ja wykorzystać do monitorowania zmian w plikach, które wygląda następująco:
from tasks import process_file
file_name = '/file/to/process'
result = process_file.delay(file_name)
result.get()
I z tym małym kodem, seler nie widzi zadań i ich nie przetwarza. Mogę wykonać podobny kod w interpreter Pythona i seler przetwarza je:
py >>> from tasks import process_file
py >>> process_file.delay('/file/to/process')
<AsyncResult: 8af23a4e-3f26-469c-8eee-e646b9d28c7b>
Kiedy uruchomić zadania z tłumacza jednak beat.log
i worker1.log
nie wykazują żadnych oznak, że zadania zostały otrzymane, ale przy użyciu logging
I może potwierdzić wykonanie kodu zadania. Nie ma również oczywistych błędów w plikach .log
. Jakieś pomysły, które mogą być przyczyną tego problemu?
My /etc/default/celerybeat
wygląda następująco:
CELERY_BIN="/usr/local/bin/celery"
CELERYBEAT_CHDIR="/opt/dirwithpyfiles"
CELERYBEAT_OPTS="--schedule=/var/run/celery/celerybeat-schedule"
I /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