Celery 任务重传失败后如何从记录器中隐藏异常转储?

问题描述

我有一个带有自动重传的 Celery 任务设置,因为它轮询外部 REST API。如果 API 无法访问,重传工作正常,只是在最后一次重试后抛出 task_Failed 然后转储页面的原始 HTML 和 CSS 代码,上面写着 Sorry! The page you’re looking for cannot be found

假设 HTML 和 CSS 代码来自任务异常,我的问题是如何配置任务(或记录器)以隐藏异常转储?

这是我的代码的样子:

import structlog
log = structlog.get_logger(__name__)

class BaseTaskWithRetry(Task):
    autoretry_for = (ccxt.DDoSProtection,ccxt.RateLimitExceeded,ccxt.RequestTimeout,ccxt.ExchangeNotAvailable,ccxt.NetworkError)

    retry_kwargs = {'max_retries': 5,'default_retry_delay': 3}
    retry_backoff = True
    retry_backoff_max = 30
    retry_jitter = False

@shared_task(bind=True,base=BaseTaskWithRetry)
def update_market(self,exid):

    log.info('Update market')

    client = do_stuff(exid)
    response = client.action()

输出如下:

2021-05-19 14:13:15.399638 [info     ] Update prices   [marketsdata.tasks]
2021-05-19 14:13:30.000435 [warning  ] task_retrying   [django_structlog.celery.receivers]
2021-05-19 14:13:15.399638 [info     ] Update prices   [marketsdata.tasks]
2021-05-19 14:13:30.000435 [warning  ] task_retrying   [django_structlog.celery.receivers]
2021-05-19 14:13:15.399638 [info     ] Update prices   [marketsdata.tasks]
2021-05-19 14:13:30.000435 [warning  ] task_retrying   [django_structlog.celery.receivers]
2021-05-19 14:13:15.399638 [info     ] Update prices   [marketsdata.tasks]
2021-05-19 14:13:30.000435 [warning  ] task_retrying   [django_structlog.celery.receivers]
2021-05-19 14:13:15.399638 [info     ] Update prices   [marketsdata.tasks]
2021-05-19 14:13:30.000435 [warning  ] task_retrying   [django_structlog.celery.receivers]
2021-05-19 14:13:15.399638 [info     ] Update prices   [marketsdata.tasks]
2021-05-19 14:14:54.738525 [error    ] task_Failed     [django_structlog.celery.receivers]
<!-- saved from url=(0032)https://www.example.com/en/error -->
<html>

<head>
  <Meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

  <Meta name="format-detection" content="telephone=no,email=no,address=no">
  <title>ABC</title>
  <link rel="Shortcut Icon" href="https://www.example.com/en/favicon.ico">
  <style>
    body {
      margin: 0
    ...
  ...
</body>
Task marketsdata.tasks.update_market[814ee174-5379-47e3-9840-04f4430f7afe] raised unexpected ...

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...