python - Django +Celery +SQS -> boto.exception.SQSError : SQSError: 599 gnutls_handshake()

标签 python django celery

我在生产环境中使用 Django 应用程序与 Celery 和 Amazon SQS 一起工作。每天在我的 celery 日志中我都可以看到有 SSL 错误:

[ERROR/MainProcess] Empty body: SQSError: 599 gnutls_handshake() failed: An unexpected TLS packet was received.

尝试重新连接到代理时出现下一个错误:

[2016-12-14 16:06:28,917: 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 284, in create_loop
    poll_timeout = fire_timers(propagate=propagate) if scheduled else 1
  File "/home/ubuntu/virtualenvs/env/lib/python3.5/site-packages/kombu/async/hub.py", line 137, in fire_timers
    entry()
  File "/home/ubuntu/virtualenvs/env/lib/python3.5/site-packages/kombu/async/timer.py", line 68, in __call__
    return self.fun(*self.args, **self.kwargs)
  File "/home/ubuntu/virtualenvs/env/lib/python3.5/site-packages/kombu/async/timer.py", line 127, in _reschedules
    return fun(*args, **kwargs)
  File "/home/ubuntu/virtualenvs/env/lib/python3.5/site-packages/kombu/async/http/curl.py", line 108, in _timeout_check
    self._process_pending_requests()
  File "/home/ubuntu/virtualenvs/env/lib/python3.5/site-packages/kombu/async/http/curl.py", line 132, in _process_pending_requests
    self._process(curl, errno, reason)
  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: 599 gnutls_handshake() failed: An unexpected TLS packet was received.

有时队列会在收到此消息后崩溃,我必须重新启动我的 Celery worker。一般来说,我不确定在收到此错误后 Celery 任务是否正在运行并正确执行。

解决这个问题的最佳方法是什么?

最佳答案

看来我已经找到了我的问题的答案。问题出在 kombu -> pycurl -> curl -> gnutls 中。 GnuTLS 库总是会丢弃 SSL 连接。所以我找到的唯一可能的解决方案是强制 libcurl 与 openssl 而不是 GnuTLS 一起工作。

这是我的分步指南 "How to reinstall curl"

对不起,伙计们,我的赏金会退还给我! ;-)

关于python - Django +Celery +SQS -> boto.exception.SQSError : SQSError: 599 gnutls_handshake(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41084351/

相关文章:

django - 如何使用 Django 编写 Facebook 应用程序?

python - 错误 R14(超出内存配额)导致在 Heroku 中使用 Selenium 与 Python、FastAPI 和 Celery 时出现 TimeoutException

python - 发送具有正确上下文的电子邮件任务

django - 如何在 Django 中重置管理员密码

django - 从登录用户预填充管理字段

python - 比较python中两个文件的md5哈希值

python:基于键排序键:值对

python - Flower Http Api 获取 Celery 任务详情

python - 如何找到解决这个大值递归问题的数学方法呢?

python - 将变量存储在字典中并降序排序