Estou recebendo o seguinte erro no meu log de aipo:
[2018-05-04 23:33:42,186: ERROR/MainProcess] Received unregistered task of type 'test_post'.
The message has been ignored and discarded.
Did you remember to import the module containing this task?
Or maybe you're using relative imports?
Please see
http://docs.celeryq.org/en/latest/internals/protocol.html
for more information.
The full contents of the message body was:
'[[], {}, {"callbacks": null, "errbacks": null, "chord": null, "chain": null}]' (77b)
Traceback (most recent call last):
File "/home/james/postr/env/lib/python3.5/site-packages/celery/worker/consumer/consumer.py", li$
strategy = strategies[type_]
KeyError: 'test_post'
post_jobs
é minha única tarefa de aipo, e está em outro módulo (não no módulo principal do aplicativo), o que pode ser o motivo pelo qual estou encontrando esse problema. Eu fui forçado a fazer isso, pois meu modelo não podia ser importado do aplicativo principal. Meu conf de aipo se parece com isso ( post
não é o módulo principal):
[program:postr-celery]
command=/home/james/postr/env/bin/celery -A post worker --loglevel=INFO
directory=/home/james/postr
user=james
numprocs=1
stdout_logfile=/var/log/supervisor/celery.log
stderr_logfile=/var/log/supervisor/celery.log
autostart=true
autorestart=true
startsecs=10
; Need to wait for currently executing tasks to finish at shutdown.
; Increase this if you have very long running tasks.
stopwaitsecs = 600
stopasgroup=true
Eu posso receber a tarefa com sucesso:
noentanto,quandoeucomeçominhabatidadeaipoviacelery-Adraft1beat
:
meulogdeaiporetornaoerro(Receivedunregisteredtaskoftype'test_post'
):
Eutenteicomeçarabaterceleryviacelery-Apostbeat
,masissonãomudanada.
Minhasconfiguraçõessãoassim:
CELERY_BROKER_URL='amqp://{}:{}@174.138.62.249/vhost'.format(config('RABBIT_USER'),config('RABBIT_PW'))CELERY_BEAT_SCHEDULER="django_celery_beat.schedulers.DatabaseScheduler"
CELERYBEAT_SCHEDULE = {
'test_post': {
'task': 'post.tasks.test_post',
'schedule': crontab(minute=40),
}
}
post / tasks.py
@app.task
def test_post():
from .models import Post
for i in Post.objects.all():
if i.entered_category == "test":
i.entered_category = "not_test"
i.save()
return HttpResponseRedirect('/')
post / celery.py
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'draft1.settings')
app = Celery(broker=CELERY_BROKER_URL)
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
draft1 / celery.py
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'draft1.settings')
app = Celery("draft1", broker=CELERY_BROKER_URL)
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
Alguma ideia de porque estou recebendo o erro e como posso corrigi-lo?