2016-12-09 3 views
2

Я бег сельдерея с SQS в приложении Django:Celery 4.0.0 + Amazon SQS -> «Учетные данные должны быть привязаны к допустимой области, а не к очереди».

Когда я указать регион в настройках брокера, как:

CELERY_BROKER_URL = 'sqs://' 
CELERY_BROKER_TRANSPORT_OPTIONS = { 
    'region': 'eu-west-1', 
    'polling_interval': 3, 
    'visibility_timeout': 300, 
    'queue_name_prefix':'dev-celery-', 
} 

можно увидеть очереди, созданные в Amazon SQS, но в то же время я следующее сообщение об ошибке когда я пытаюсь запустить работника.

[2016-12-09 16:06:41,206: WARNING/MainProcess] consumer: Connection to broker lost. Trying to re-establish the connection... 
Traceback (most recent call last): 
File "/home/ubuntu/virtualenvs/env/lib/python3.5/site-packages/celery/worker/consumer/consumer.py", line 318, in start 
blueprint.start(self) 
File "/home/ubuntu/virtualenvs/env/lib/python3.5/site-packages/celery/bootsteps.py", line 119, in start 
step.start(parent) 
File "/home/ubuntu/virtualenvs/env/lib/python3.5/site-packages/celery/worker/consumer/consumer.py", line 584, in start 
c.loop(*c.loop_args()) 
File "/home/ubuntu/virtualenvs/env/lib/python3.5/site-packages/celery/worker/loops.py", line 88, in asynloop 
next(loop) 
File "/home/ubuntu/virtualenvs/env/lib/python3.5/site-packages/kombu/async/hub.py", line 345, in create_loop 
cb(*cbargs) 
File "/home/ubuntu/virtualenvs/env/lib/python3.5/site-packages/kombu/async/http/curl.py", line 111, in on_readable 
return self._on_event(fd, _pycurl.CSELECT_IN) 
File "/home/ubuntu/virtualenvs/env/lib/python3.5/site-packages/kombu/async/http/curl.py", line 124, in _on_event 
self._process_pending_requests() 
File "/home/ubuntu/virtualenvs/env/lib/python3.5/site-packages/kombu/async/http/curl.py", line 130, in _process_pending_requests 
self._process(curl) 
File "/home/ubuntu/virtualenvs/env/lib/python3.5/site-packages/kombu/async/http/curl.py", line 178, in _process 
buffer=buffer, effective_url=effective_url, error=error, 
File "/home/ubuntu/virtualenvs/env/lib/python3.5/site-packages/vine/promises.py", line 146, in call 
svpending(*ca, **ck) 
File "/home/ubuntu/virtualenvs/env/lib/python3.5/site-packages/vine/promises.py", line 139, in call 
return self.throw() 
File "/home/ubuntu/virtualenvs/env/lib/python3.5/site-packages/vine/promises.py", line 136, in call 
retval = fun(*final_args, **final_kwargs) 
File "/home/ubuntu/virtualenvs/env/lib/python3.5/site-packages/vine/funtools.py", line 100, in _transback 
return callback(ret) 
File "/home/ubuntu/virtualenvs/env/lib/python3.5/site-packages/vine/promises.py", line 139, in call 
return self.throw() 
File "/home/ubuntu/virtualenvs/env/lib/python3.5/site-packages/vine/promises.py", line 136, in call 
retval = fun(*final_args, **final_kwargs) 
File "/home/ubuntu/virtualenvs/env/lib/python3.5/site-packages/vine/funtools.py", line 98, in _transback 
callback.throw() 
File "/home/ubuntu/virtualenvs/env/lib/python3.5/site-packages/vine/funtools.py", line 96, in transback 
ret = filter(*args + (ret,), **kwargs) 
File "/home/ubuntu/virtualenvs/env/lib/python3.5/site-packages/kombu/async/aws/connection.py", line 269, in _on_list_ready 
raise self._for_status(response, body) 
boto.exception.SQSError: SQSError: 403 Forbidden 
SenderSignatureDoesNotMatchCredential should be scoped to a valid region, not 'queue'. 
[2016-12-09 16:06:41,260: INFO/MainProcess] Connected to sqs://localhost// 

Это может быть ошибка в сельдерее, так что я создала issue at git. Я предполагаю, что Celery использует устаревшие конечные точки для SQS. Новые конечные точки описываются at Amazon.

Если это не так, пожалуйста, разместите свое решение!

ответ

0

Я нашел ответ here

ошибка связана с не обновленной endpoints.json в Бото. Pull request уже создан, но не слит.

В качестве обходного решения можно загрузить персональный конечный пункт.json файл для boto. Для этого вы должны указать путь к файлу в переменной среды BOTO_ENDPOINTS и загрузить исправленный файл из запроса pull.

После исправления конечных точек я решил проблему.