如何为芹菜后端连接添加重试?

Nilesh

我正在使用celery 5.0.1并使用CELERY_BACKEND_URLas redis://:password@redisinstance1:6379/0它可以正常工作,但是当Redis实例连接松动时,它会因出错而中断任务。

Exception: Error while reading from socket: (104, 'Connection reset by peer')
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/dist-packages/redis/connection.py", line 198, in _read_from_socket
    data = recv(self._sock, socket_read_size)
  File "/usr/local/lib/python3.7/dist-packages/redis/_compat.py", line 72, in recv
    return sock.recv(*args, **kwargs)
ConnectionResetError: [Errno 104] Connection reset by peer

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/dist-packages/celery/app/trace.py", line 477, in trace_task
    uuid, retval, task_request, publish_result,
  File "/usr/local/lib/python3.7/dist-packages/celery/backends/base.py", line 154, in mark_as_done
    self.store_result(task_id, result, state, request=request)
  File "/usr/local/lib/python3.7/dist-packages/celery/backends/base.py", line 439, in store_result
    request=request, **kwargs)
  File "/usr/local/lib/python3.7/dist-packages/celery/backends/base.py", line 855, in _store_result
    current_meta = self._get_task_meta_for(task_id)
  File "/usr/local/lib/python3.7/dist-packages/celery/backends/base.py", line 873, in _get_task_meta_for
    meta = self.get(self.get_key_for_task(task_id))
  File "/usr/local/lib/python3.7/dist-packages/celery/backends/redis.py", line 346, in get
    return self.client.get(key)
  File "/usr/local/lib/python3.7/dist-packages/redis/client.py", line 1606, in get
    return self.execute_command('GET', name)
  File "/usr/local/lib/python3.7/dist-packages/redis/client.py", line 901, in execute_command
    return self.parse_response(conn, command_name, **options)
  File "/usr/local/lib/python3.7/dist-packages/redis/client.py", line 915, in parse_response
    response = connection.read_response()
  File "/usr/local/lib/python3.7/dist-packages/redis/connection.py", line 739, in read_response
    response = self._parser.read_response()
  File "/usr/local/lib/python3.7/dist-packages/redis/connection.py", line 324, in read_response
    raw = self._buffer.readline()
  File "/usr/local/lib/python3.7/dist-packages/redis/connection.py", line 256, in readline
    self._read_from_socket()
  File "/usr/local/lib/python3.7/dist-packages/redis/connection.py", line 223, in _read_from_socket
    (ex.args,))
redis.exceptions.ConnectionError: Error while reading from socket: (104, 'Connection reset by peer')


Celery worker: None
Celery task id: 244b56af-7c96-56cf-a01a-9256cfd98ade
Celery retry attempt: 0
Task args: []
Task kwargs: {'address': 'ipadd', 'uid': 'uid', 'hexID': 'hexID', 'taskID': '244b56af-7c96-56cf-a01a-9256cfd98ade'}

当我运行第二个任务时,它运行良好,在短时间内连接中存在一些故障。

我可以设置一些方法,当celery尝试将结果更新为Redis时,如果返回错误,它将在2-5秒后重试?

我知道如何在任务中设置重试,但这不会导致任务失败。我的工作正常,它返回了数据,但是celery在更新到后端时失去了连接。

德扬·莱基奇

要处理连接超时,您可以在Celery配置中包含以下内容:

app.conf.broker_transport_options = {
    'retry_policy': {
       'timeout': 5.0
    }
}
app.conf.result_backend_transport_options = {
    'retry_policy': {
       'timeout': 5.0
    }
}

您可能要考虑在配置中使用其他Redis后端设置redis_retry_on_timeout例如以下示例。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何跟踪芹菜重试

来自分类Dev

如何添加重试以调用Web服务?

来自分类Dev

如何在 Jetty 中向端口绑定添加重试

来自分类Dev

如何覆盖芹菜任务的后端

来自分类Dev

如何为该游戏添加重置选项?

来自分类Dev

如何在akka http中向POST请求添加重试?

来自分类Dev

如何在Python中的函数中添加重试选项?

来自分类Dev

在Apache Storm上为螺栓添加重试机制

来自分类Dev

在Apache Storm上为螺栓添加重试机制

来自分类Dev

如何添加重置功能?

来自分类Dev

如何检查芹菜结果后端是否正常工作

来自分类Dev

如何为用户上传到后端的DataObject的文件添加下载按钮?

来自分类Dev

Magento如何为管理员/后端添加模板路径提示

来自分类Dev

如何为用户上传到后端的DataObject的文件添加下载按钮?

来自分类Dev

如何为后端 Salesforce Cloud 上的每个请求添加加载微调器

来自分类Dev

Magento 2:如何为所有页面的前端和后端添加侧边栏?

来自分类Dev

如何为 Recaptcha 错误取消禁止我的 IP:“无法联系 reCAPTCHA。检查您的连接并重试。”

来自分类Dev

如何为芹菜任务日志指定文件路径?

来自分类Dev

如何为芹菜函数join_native制作模拟补丁

来自分类Dev

在C#中为同步/异步任务添加重试/回滚机制的最佳方法是哪种?

来自分类Dev

如何为magento后端启用探查器

来自分类Dev

如何重试丢失的连接以进行可靠的传输?

来自分类Dev

如何使用晶格添加重叠的直方图

来自分类Dev

如何向UIButton SWIFT添加重力

来自分类Dev

如何添加重定向到https?

来自分类Dev

如何向json添加重复键?

来自分类Dev

如何将行为添加到我的Azure API(例如,将其连接到后端)?

来自分类Dev

如何在Spring RequestHandlerRetryAdvice中以指数方式增加重试间隔

来自分类Dev

芹菜连接错误

Related 相关文章

  1. 1

    如何跟踪芹菜重试

  2. 2

    如何添加重试以调用Web服务?

  3. 3

    如何在 Jetty 中向端口绑定添加重试

  4. 4

    如何覆盖芹菜任务的后端

  5. 5

    如何为该游戏添加重置选项?

  6. 6

    如何在akka http中向POST请求添加重试?

  7. 7

    如何在Python中的函数中添加重试选项?

  8. 8

    在Apache Storm上为螺栓添加重试机制

  9. 9

    在Apache Storm上为螺栓添加重试机制

  10. 10

    如何添加重置功能?

  11. 11

    如何检查芹菜结果后端是否正常工作

  12. 12

    如何为用户上传到后端的DataObject的文件添加下载按钮?

  13. 13

    Magento如何为管理员/后端添加模板路径提示

  14. 14

    如何为用户上传到后端的DataObject的文件添加下载按钮?

  15. 15

    如何为后端 Salesforce Cloud 上的每个请求添加加载微调器

  16. 16

    Magento 2:如何为所有页面的前端和后端添加侧边栏?

  17. 17

    如何为 Recaptcha 错误取消禁止我的 IP:“无法联系 reCAPTCHA。检查您的连接并重试。”

  18. 18

    如何为芹菜任务日志指定文件路径?

  19. 19

    如何为芹菜函数join_native制作模拟补丁

  20. 20

    在C#中为同步/异步任务添加重试/回滚机制的最佳方法是哪种?

  21. 21

    如何为magento后端启用探查器

  22. 22

    如何重试丢失的连接以进行可靠的传输?

  23. 23

    如何使用晶格添加重叠的直方图

  24. 24

    如何向UIButton SWIFT添加重力

  25. 25

    如何添加重定向到https?

  26. 26

    如何向json添加重复键?

  27. 27

    如何将行为添加到我的Azure API(例如,将其连接到后端)?

  28. 28

    如何在Spring RequestHandlerRetryAdvice中以指数方式增加重试间隔

  29. 29

    芹菜连接错误

热门标签

归档