【问题标题】:Django 3.1 asgi server timeout connecting to itself inside async viewDjango 3.1 asgi 服务器超时在异步视图中连接到自身
【发布时间】:2020-10-23 23:41:30
【问题描述】:

尝试从 Django 3.1 中的异步视图连接到由同一 asgi 服务器提供的同步视图时遇到问题。在普通的 wsgi 开发服务器中这样做是可行的,但在 asgi 服务器中却不行。这似乎有点奇怪。可能我误解了 asgi 的工作原理:)。这是有关如何重现此内容的链接:

All steps to reproduce this.

这里只是导致问题的视图。也许有人可以通过查看这些内容立即判断我做错了什么:

import httpx

from django.http import JsonResponse


def sync_api_view(request):
    payload = {"foo": "bar"}
    return JsonResponse(payload)


def sync_aggregation_view(request):
    responses = []
    r = httpx.get("http://127.0.0.1:8000/sync_api_view/")
    responses.append(r.json())
    result = {"responses": responses}
    return JsonResponse(result)

“sync_aggregation_view”是在 wsgi 中工作但不能通过 asgi 工作的那个。

【问题讨论】:

    标签: python django asynchronous wsgi asgi


    【解决方案1】:

    好吧,犯了一个愚蠢的错误。从该服务器内连接到单线程服务器会导致死锁。 wsgi django开发服务器行为不同的原因不是wsgi或asgi,而是因为从Django 1.4开始就是multithreaded by default。我只是没注意到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-01
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-13
      相关资源
      最近更新 更多