django - 带有 JsonResponse 的 django cookie 切割器中的 CRITICAL WORKER TIMEOUT
问题描述
我有以下日志
$ docker logs 1e5e704507c2
PostgreSQL is available
2198 static files copied to '/app/staticfiles', 6582 post-processed.
[2020-08-05 17:46:12 +0000] [10] [INFO] Starting gunicorn 20.0.0
[2020-08-05 17:46:12 +0000] [10] [INFO] Listening at: http://0.0.0.0:5000 (10)
[2020-08-05 17:46:12 +0000] [10] [INFO] Using worker: sync
[2020-08-05 17:46:12 +0000] [17] [INFO] Booting worker with pid: 17
[2020-08-05 17:46:12 +0000] [18] [INFO] Booting worker with pid: 18
[2020-08-05 17:46:12 +0000] [19] [INFO] Booting worker with pid: 19
[2020-08-05 17:46:12 +0000] [20] [INFO] Booting worker with pid: 20
INFO 2020-08-05 17:48:21,763 views 18 140288548957512 meeting_approve:
[2020-08-05 17:48:51 +0000] [10] [CRITICAL] WORKER TIMEOUT (pid:18)
[2020-08-05 17:48:51 +0000] [18] [INFO] Worker exiting (pid: 18)
[2020-08-05 17:48:52 +0000] [21] [INFO] Booting worker with pid: 21
INFO 2020-08-05 17:52:06,252 views 17 140288548957512 meeting_approve:
[2020-08-05 17:52:36 +0000] [10] [CRITICAL] WORKER TIMEOUT (pid:17)
[2020-08-05 17:52:36 +0000] [17] [INFO] Worker exiting (pid: 17)
[2020-08-05 17:52:36 +0000] [22] [INFO] Booting worker with pid: 22
这是我的观点
# views.py
def approve(request, pk):
logger.info("meeting_approve:")
try:
logger.info("approve: query company api")
r = requests.get(
f"{foo}/bar",
timeout=5,
)
except Timeout:
messages.add_message(
request, messages.WARNING, "Cannot connect to company api."
)
logger.warn(f"meeting_approve: Cannot connect to company api")
return JsonResponse({"error": "Cannot connect to company api"}, status=500)
logger.info(f"meeting_approve: check security {pk}")
meeting = Meeting.objects.get(id=pk)
logger.info(f"meeting_approve: check if blocked {meeting.company}")
为什么我的 JsonResponse 超时?
解决方案
问题似乎是任何 5xx 状态都会使服务器超时。这可能是因为 api 试图通过电子邮件向管理员发送堆栈跟踪,而电子邮件未在服务器上配置。
解决方法是不使用 5xx 状态。
return JsonResponse({"error": "Cannot connect to company api"}, status=404)
推荐阅读
- networking - 签名社交网络示例
- r - 如何从 R 中的散点图中获取样本信息(或门控)?
- java - 尝试使用 Liquidbase 运行触发器时出现错误
- vb.net - Outlook 项目 Unicode
- javascript - 反应本机获取数据
- css - 在浏览器的 100% 和 80% 缩放级别上,将弹出窗口保持在同一位置
- types - INCLUDE 中的声明在主程序中不被识别
- python - Python -V 在 Windows 10 上不起作用或返回任何错误
- angular - 忽略未捕获的错误错误:服务器提前终止,状态为 3221225477
- c# - 在 Xamarin 的 xmlns 中找不到类型 Ellipse