AttributeError: у объекта 'DisabledBackend' нет атрибута '_get_task_meta_for' дляно это хорошо для - PullRequest
0 голосов
/ 30 июня 2019

Я начал использовать сельдерей, используя:

celery -A tasks worker --loglevel=info

и затем я запустил свое приложение на python, используя:

python app.py

в app.py, когда я хочу проверить AsycnResults:

for id in task_id.keys():
    st[id] = str(AsyncResult(id).state)

выдает сообщения об ошибках:

Traceback (most recent call last):
  File "<...>/app.py", line 271, in update_task_status  
    **st[id] = str(AsyncResult(id).state)**  
  File "../anaconda3/lib/python3.7/site-packages/celery/result.py", line 473, in state
    return self._get_task_meta()['status']  
  File "<...>/anaconda3/lib/python3.7/site-packages/celery/result.py", line 412, in _get_task_meta
    return self._maybe_set_cache(self.backend.get_task_meta(self.id))  
  File "<...>/anaconda3/lib/python3.7/site-packages/celery/backends/base.py", line 386, in get_task_meta  
    meta = self._get_task_meta_for(task_id)    
  AttributeError: 'DisabledBackend' object has no attribute '_get_task_meta_for' 

однако, , когда я запускаю приложение и сельдерей с heroku, все работает нормально :

heroku local  
<and the Procfile is like>  
web: gunicorn -b 0.0.0.0:8000 app:server --log-file=-
worker: celery -A tasks worker --loglevel=info

странно, когда я хочу установить больше рабочих / потоков под локальную героку , это снова выдает ту же ошибку.

<heroku local's Procfile>
web: gunicorn --workers 6 --threads 2 -b 0.0.0.0:11000 app:server --log-file=-
#web: gunicorn -b 0.0.0.0:11000 app:server --log-file=-
worker: celery -A tasks worker --loglevel=info

и в обоих случаях сельдерей, кажется, работает правильно и может получать и обрабатывать сообщение:


[tasks]
  . tasks.query_adj_info
  . tasks.query_perf_by
  . tasks.query_perf_dai
  . tasks.query_perf_sum

[2019-07-03 21:56:59,539: INFO/MainProcess] Connected to redis://0.0.0.0:6379//
[2019-07-03 21:56:59,549: INFO/MainProcess] mingle: searching for neighbors
[2019-07-03 21:57:00,573: INFO/MainProcess] mingle: all alone
[2019-07-03 21:57:00,582: INFO/MainProcess] celery@r ready.
[2019-07-03 21:58:57,779: INFO/MainProcess] Received task: tasks.query[depid_eddd6a1a-610f-484f-b2fa-f3052e0c910b_celtid_perfa616b950-e7b8-4c5b-9d80-dc9907796be8]  
[2019-07-03 21:58:57,780: INFO/MainProcess] Received task: ....

1 Ответ

0 голосов
/ 02 июля 2019

Проверьте, настроили ли вы бэкэнд

app = Celery('proj', backend='amqp://', broker='amqp://guest@localhost//')

Если вы используете django, попробуйте использовать python manage.py shell вместо только python.У меня были проблемы с backend в сельдерее на чистой оболочке python.

...