[Django] #34451: Incorrect handling of ImproperlyConfigured Exception in views in ASGI context

3 views
Skip to first unread message

Django

unread,
Mar 31, 2023, 6:20:13 AM3/31/23
to django-...@googlegroups.com
#34451: Incorrect handling of ImproperlyConfigured Exception in views in ASGI
context
------------------------------------------+------------------------
Reporter: Michael Galler | Owner: nobody
Type: Bug | Status: new
Component: Uncategorized | Version: 4.1
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
------------------------------------------+------------------------
start with


{{{
django-admin startproject myproject
}}}

views.py
{{{

from django.views.generic import FormView


class TestView(FormView):

async def post(self, request, *args, **kwargs):
return 'Foobar'
}}}


urls.py
{{{
from django.contrib import admin
from django.urls import path

from myproject.views import TestView

urlpatterns = [
path('admin/', admin.site.urls),
path('test/', TestView.as_view()),
]
}}}

This should raise
django.core.exceptions.ImproperlyConfigured: TestView HTTP handlers must
either be all sync or all async.

Running the devserver via manage.py results in


{{{
C:\code\myproject\venv\Scripts\python.exe C:\code\myproject\manage.py
runserver 8000
Performing system checks...

Watching for file changes with StatReloader
Exception in thread django-main-thread:
Traceback (most recent call last):
File "C:\Program Files\Python311\Lib\threading.py", line 1038, in
_bootstrap_inner
self.run()
File "C:\Program Files\Python311\Lib\threading.py", line 975, in run
self._target(*self._args, **self._kwargs)
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\autoreload.py", line 64, in wrapper
fn(*args, **kwargs)
File "C:\code\myproject\venv\Lib\site-
packages\django\core\management\commands\runserver.py", line 134, in
inner_run
self.check(display_num_errors=True)
File "C:\code\myproject\venv\Lib\site-
packages\django\core\management\base.py", line 475, in check
all_issues = checks.run_checks(
^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\checks\registry.py", line 88, in run_checks
new_errors = check(app_configs=app_configs, databases=databases)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\checks\urls.py", line 14, in check_url_config
return check_resolver(resolver)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\checks\urls.py", line 24, in check_resolver
return check_method()
^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 494, in check
for pattern in self.url_patterns:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 715, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns",
self.urlconf_module)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 708, in urlconf_module
return import_module(self.urlconf_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\importlib\__init__.py", line 126,
in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in
_find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "C:\code\myproject\myproject\urls.py", line 8, in <module>
path('test/', TestView.as_view()),
^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 119, in as_view
if cls.view_is_async:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 71, in __get__
return self.fget(cls)
^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 73, in view_is_async
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: TestView HTTP handlers must
either be all sync or all async.

}}}

Now the same thing with hypercorn will result in some sort of recursion
that I do not understand.
Uvicorn behaves the same way.


{{{
(venv) λ hypercorn myproject.asgi:application
[2023-03-31 11:54:00 +0200] [16000] [WARNING] ASGI Framework Lifespan
error, continuing without Lifespan support
[2023-03-31 11:54:00 +0200] [16000] [INFO] Running on
http://127.0.0.1:8000 (CTRL + C to quit)
[2023-03-31 11:54:08 +0200] [16000] [ERROR] Error in ASGI Framework
Traceback (most recent call last):
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
486, in thread_handler
raise exc_info[1]
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 43, in inner
response = await get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\base.py", line 235, in _get_response_async
callback, callback_args, callback_kwargs =
self.resolve_request(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\base.py", line 313, in resolve_request
resolver_match = resolver.resolve(request.path_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 663, in resolve
for pattern in self.url_patterns:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 715, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns",
self.urlconf_module)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 708, in urlconf_module
return import_module(self.urlconf_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\importlib\__init__.py", line 126,
in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in
_find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "C:\code\myproject\myproject\urls.py", line 8, in <module>
path('test/', TestView.as_view()),
^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 119, in as_view
if cls.view_is_async:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 71, in __get__
return self.fget(cls)
^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 73, in view_is_async
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: TestView HTTP handlers must
either be all sync or all async.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
486, in thread_handler
raise exc_info[1]
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 43, in inner
response = await get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\deprecation.py", line 152, in __acall__
response = response or await self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 45, in inner
response = await sync_to_async(
^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
448, in __call__
ret = await asyncio.wait_for(future, timeout=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\tasks.py", line 442, in
wait_for
return await fut
^^^^^^^^^
File "C:\Program Files\Python311\Lib\concurrent\futures\thread.py", line
58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
488, in thread_handler
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 141, in
response_for_exception
response = handle_uncaught_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 182, in
handle_uncaught_exception
return debug.technical_500_response(request, *exc_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 66, in technical_500_response
html = reporter.get_traceback_html()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 396, in get_traceback_html
c = Context(self.get_traceback_data(), use_l10n=False)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 381, in get_traceback_data
c["raising_view_name"] = get_caller(self.request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 99, in get_caller
resolver_match = resolve(request.path)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\urls\base.py",
line 24, in resolve
return get_resolver(urlconf).resolve(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 663, in resolve
for pattern in self.url_patterns:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 715, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns",
self.urlconf_module)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 708, in urlconf_module
return import_module(self.urlconf_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\importlib\__init__.py", line 126,
in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in
_find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "C:\code\myproject\myproject\urls.py", line 8, in <module>
path('test/', TestView.as_view()),
^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 119, in as_view
if cls.view_is_async:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 71, in __get__
return self.fget(cls)
^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 73, in view_is_async
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: TestView HTTP handlers must
either be all sync or all async.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
486, in thread_handler
raise exc_info[1]
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 43, in inner
response = await get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\deprecation.py", line 152, in __acall__
response = response or await self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 45, in inner
response = await sync_to_async(
^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
448, in __call__
ret = await asyncio.wait_for(future, timeout=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\tasks.py", line 442, in
wait_for
return await fut
^^^^^^^^^
File "C:\Program Files\Python311\Lib\concurrent\futures\thread.py", line
58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
488, in thread_handler
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 141, in
response_for_exception
response = handle_uncaught_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 182, in
handle_uncaught_exception
return debug.technical_500_response(request, *exc_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 66, in technical_500_response
html = reporter.get_traceback_html()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 396, in get_traceback_html
c = Context(self.get_traceback_data(), use_l10n=False)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 381, in get_traceback_data
c["raising_view_name"] = get_caller(self.request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 99, in get_caller
resolver_match = resolve(request.path)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\urls\base.py",
line 24, in resolve
return get_resolver(urlconf).resolve(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 663, in resolve
for pattern in self.url_patterns:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 715, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns",
self.urlconf_module)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 708, in urlconf_module
return import_module(self.urlconf_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\importlib\__init__.py", line 126,
in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in
_find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "C:\code\myproject\myproject\urls.py", line 8, in <module>
path('test/', TestView.as_view()),
^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 119, in as_view
if cls.view_is_async:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 71, in __get__
return self.fget(cls)
^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 73, in view_is_async
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: TestView HTTP handlers must
either be all sync or all async.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
486, in thread_handler
raise exc_info[1]
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 43, in inner
response = await get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\deprecation.py", line 152, in __acall__
response = response or await self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 45, in inner
response = await sync_to_async(
^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
448, in __call__
ret = await asyncio.wait_for(future, timeout=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\tasks.py", line 442, in
wait_for
return await fut
^^^^^^^^^
File "C:\Program Files\Python311\Lib\concurrent\futures\thread.py", line
58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
488, in thread_handler
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 141, in
response_for_exception
response = handle_uncaught_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 182, in
handle_uncaught_exception
return debug.technical_500_response(request, *exc_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 66, in technical_500_response
html = reporter.get_traceback_html()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 396, in get_traceback_html
c = Context(self.get_traceback_data(), use_l10n=False)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 381, in get_traceback_data
c["raising_view_name"] = get_caller(self.request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 99, in get_caller
resolver_match = resolve(request.path)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\urls\base.py",
line 24, in resolve
return get_resolver(urlconf).resolve(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 663, in resolve
for pattern in self.url_patterns:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 715, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns",
self.urlconf_module)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 708, in urlconf_module
return import_module(self.urlconf_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\importlib\__init__.py", line 126,
in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in
_find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "C:\code\myproject\myproject\urls.py", line 8, in <module>
path('test/', TestView.as_view()),
^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 119, in as_view
if cls.view_is_async:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 71, in __get__
return self.fget(cls)
^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 73, in view_is_async
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: TestView HTTP handlers must
either be all sync or all async.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
486, in thread_handler
raise exc_info[1]
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 43, in inner
response = await get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\deprecation.py", line 152, in __acall__
response = response or await self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 45, in inner
response = await sync_to_async(
^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
448, in __call__
ret = await asyncio.wait_for(future, timeout=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\tasks.py", line 442, in
wait_for
return await fut
^^^^^^^^^
File "C:\Program Files\Python311\Lib\concurrent\futures\thread.py", line
58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
488, in thread_handler
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 141, in
response_for_exception
response = handle_uncaught_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 182, in
handle_uncaught_exception
return debug.technical_500_response(request, *exc_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 66, in technical_500_response
html = reporter.get_traceback_html()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 396, in get_traceback_html
c = Context(self.get_traceback_data(), use_l10n=False)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 381, in get_traceback_data
c["raising_view_name"] = get_caller(self.request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 99, in get_caller
resolver_match = resolve(request.path)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\urls\base.py",
line 24, in resolve
return get_resolver(urlconf).resolve(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 663, in resolve
for pattern in self.url_patterns:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 715, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns",
self.urlconf_module)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 708, in urlconf_module
return import_module(self.urlconf_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\importlib\__init__.py", line 126,
in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in
_find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "C:\code\myproject\myproject\urls.py", line 8, in <module>
path('test/', TestView.as_view()),
^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 119, in as_view
if cls.view_is_async:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 71, in __get__
return self.fget(cls)
^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 73, in view_is_async
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: TestView HTTP handlers must
either be all sync or all async.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
486, in thread_handler
raise exc_info[1]
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 43, in inner
response = await get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\deprecation.py", line 152, in __acall__
response = response or await self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 45, in inner
response = await sync_to_async(
^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
448, in __call__
ret = await asyncio.wait_for(future, timeout=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\tasks.py", line 442, in
wait_for
return await fut
^^^^^^^^^
File "C:\Program Files\Python311\Lib\concurrent\futures\thread.py", line
58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
488, in thread_handler
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 141, in
response_for_exception
response = handle_uncaught_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 182, in
handle_uncaught_exception
return debug.technical_500_response(request, *exc_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 66, in technical_500_response
html = reporter.get_traceback_html()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 396, in get_traceback_html
c = Context(self.get_traceback_data(), use_l10n=False)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 381, in get_traceback_data
c["raising_view_name"] = get_caller(self.request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 99, in get_caller
resolver_match = resolve(request.path)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\urls\base.py",
line 24, in resolve
return get_resolver(urlconf).resolve(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 663, in resolve
for pattern in self.url_patterns:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 715, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns",
self.urlconf_module)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 708, in urlconf_module
return import_module(self.urlconf_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\importlib\__init__.py", line 126,
in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in
_find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "C:\code\myproject\myproject\urls.py", line 8, in <module>
path('test/', TestView.as_view()),
^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 119, in as_view
if cls.view_is_async:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 71, in __get__
return self.fget(cls)
^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 73, in view_is_async
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: TestView HTTP handlers must
either be all sync or all async.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
486, in thread_handler
raise exc_info[1]
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 43, in inner
response = await get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\deprecation.py", line 152, in __acall__
response = response or await self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 45, in inner
response = await sync_to_async(
^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
448, in __call__
ret = await asyncio.wait_for(future, timeout=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\tasks.py", line 442, in
wait_for
return await fut
^^^^^^^^^
File "C:\Program Files\Python311\Lib\concurrent\futures\thread.py", line
58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
488, in thread_handler
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 141, in
response_for_exception
response = handle_uncaught_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 182, in
handle_uncaught_exception
return debug.technical_500_response(request, *exc_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 66, in technical_500_response
html = reporter.get_traceback_html()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 396, in get_traceback_html
c = Context(self.get_traceback_data(), use_l10n=False)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 381, in get_traceback_data
c["raising_view_name"] = get_caller(self.request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 99, in get_caller
resolver_match = resolve(request.path)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\urls\base.py",
line 24, in resolve
return get_resolver(urlconf).resolve(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 663, in resolve
for pattern in self.url_patterns:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 715, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns",
self.urlconf_module)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 708, in urlconf_module
return import_module(self.urlconf_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\importlib\__init__.py", line 126,
in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in
_find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "C:\code\myproject\myproject\urls.py", line 8, in <module>
path('test/', TestView.as_view()),
^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 119, in as_view
if cls.view_is_async:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 71, in __get__
return self.fget(cls)
^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 73, in view_is_async
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: TestView HTTP handlers must
either be all sync or all async.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
486, in thread_handler
raise exc_info[1]
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 43, in inner
response = await get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\deprecation.py", line 152, in __acall__
response = response or await self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 45, in inner
response = await sync_to_async(
^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
448, in __call__
ret = await asyncio.wait_for(future, timeout=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\tasks.py", line 442, in
wait_for
return await fut
^^^^^^^^^
File "C:\Program Files\Python311\Lib\concurrent\futures\thread.py", line
58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
488, in thread_handler
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 141, in
response_for_exception
response = handle_uncaught_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 182, in
handle_uncaught_exception
return debug.technical_500_response(request, *exc_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 66, in technical_500_response
html = reporter.get_traceback_html()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 396, in get_traceback_html
c = Context(self.get_traceback_data(), use_l10n=False)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 381, in get_traceback_data
c["raising_view_name"] = get_caller(self.request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 99, in get_caller
resolver_match = resolve(request.path)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\urls\base.py",
line 24, in resolve
return get_resolver(urlconf).resolve(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 663, in resolve
for pattern in self.url_patterns:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 715, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns",
self.urlconf_module)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 708, in urlconf_module
return import_module(self.urlconf_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\importlib\__init__.py", line 126,
in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in
_find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "C:\code\myproject\myproject\urls.py", line 8, in <module>
path('test/', TestView.as_view()),
^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 119, in as_view
if cls.view_is_async:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 71, in __get__
return self.fget(cls)
^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 73, in view_is_async
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: TestView HTTP handlers must
either be all sync or all async.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\code\myproject\venv\Lib\site-
packages\hypercorn\asyncio\task_group.py", line 23, in _handle
await app(scope, receive, send, sync_spawn, call_soon)
File "C:\code\myproject\venv\Lib\site-
packages\hypercorn\app_wrappers.py", line 33, in __call__
await self.app(scope, receive, send)
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\asgi.py", line 155, in __call__
await self.handle(scope, receive, send)
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\asgi.py", line 178, in handle
response = await self.get_response_async(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\base.py", line 162, in get_response_async
response = await self._middleware_chain(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 45, in inner
response = await sync_to_async(
^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
448, in __call__
ret = await asyncio.wait_for(future, timeout=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\tasks.py", line 442, in
wait_for
return await fut
^^^^^^^^^
File "C:\Program Files\Python311\Lib\concurrent\futures\thread.py", line
58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
488, in thread_handler
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 141, in
response_for_exception
response = handle_uncaught_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 182, in
handle_uncaught_exception
return debug.technical_500_response(request, *exc_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 66, in technical_500_response
html = reporter.get_traceback_html()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 396, in get_traceback_html
c = Context(self.get_traceback_data(), use_l10n=False)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 381, in get_traceback_data
c["raising_view_name"] = get_caller(self.request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 99, in get_caller
resolver_match = resolve(request.path)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\urls\base.py",
line 24, in resolve
return get_resolver(urlconf).resolve(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 663, in resolve
for pattern in self.url_patterns:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 715, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns",
self.urlconf_module)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 708, in urlconf_module
return import_module(self.urlconf_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\importlib\__init__.py", line 126,
in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in
_find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "C:\code\myproject\myproject\urls.py", line 8, in <module>
path('test/', TestView.as_view()),
^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 119, in as_view
if cls.view_is_async:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 71, in __get__
return self.fget(cls)
^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 73, in view_is_async
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: TestView HTTP handlers must
either be all sync or all async.
[2023-03-31 11:54:12 +0200] [16000] [ERROR] Error in ASGI Framework
Traceback (most recent call last):
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
486, in thread_handler
raise exc_info[1]
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 43, in inner
response = await get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\base.py", line 235, in _get_response_async
callback, callback_args, callback_kwargs =
self.resolve_request(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\base.py", line 313, in resolve_request
resolver_match = resolver.resolve(request.path_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 663, in resolve
for pattern in self.url_patterns:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 715, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns",
self.urlconf_module)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 708, in urlconf_module
return import_module(self.urlconf_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\importlib\__init__.py", line 126,
in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in
_find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "C:\code\myproject\myproject\urls.py", line 8, in <module>
path('test/', TestView.as_view()),
^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 119, in as_view
if cls.view_is_async:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 71, in __get__
return self.fget(cls)
^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 73, in view_is_async
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: TestView HTTP handlers must
either be all sync or all async.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
486, in thread_handler
raise exc_info[1]
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 43, in inner
response = await get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\deprecation.py", line 152, in __acall__
response = response or await self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 45, in inner
response = await sync_to_async(
^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
448, in __call__
ret = await asyncio.wait_for(future, timeout=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\tasks.py", line 442, in
wait_for
return await fut
^^^^^^^^^
File "C:\Program Files\Python311\Lib\concurrent\futures\thread.py", line
58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
488, in thread_handler
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 141, in
response_for_exception
response = handle_uncaught_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 182, in
handle_uncaught_exception
return debug.technical_500_response(request, *exc_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 66, in technical_500_response
html = reporter.get_traceback_html()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 396, in get_traceback_html
c = Context(self.get_traceback_data(), use_l10n=False)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 381, in get_traceback_data
c["raising_view_name"] = get_caller(self.request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 99, in get_caller
resolver_match = resolve(request.path)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\urls\base.py",
line 24, in resolve
return get_resolver(urlconf).resolve(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 663, in resolve
for pattern in self.url_patterns:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 715, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns",
self.urlconf_module)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 708, in urlconf_module
return import_module(self.urlconf_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\importlib\__init__.py", line 126,
in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in
_find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "C:\code\myproject\myproject\urls.py", line 8, in <module>
path('test/', TestView.as_view()),
^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 119, in as_view
if cls.view_is_async:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 71, in __get__
return self.fget(cls)
^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 73, in view_is_async
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: TestView HTTP handlers must
either be all sync or all async.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
486, in thread_handler
raise exc_info[1]
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 43, in inner
response = await get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\deprecation.py", line 152, in __acall__
response = response or await self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 45, in inner
response = await sync_to_async(
^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
448, in __call__
ret = await asyncio.wait_for(future, timeout=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\tasks.py", line 442, in
wait_for
return await fut
^^^^^^^^^
File "C:\Program Files\Python311\Lib\concurrent\futures\thread.py", line
58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
488, in thread_handler
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 141, in
response_for_exception
response = handle_uncaught_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 182, in
handle_uncaught_exception
return debug.technical_500_response(request, *exc_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 66, in technical_500_response
html = reporter.get_traceback_html()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 396, in get_traceback_html
c = Context(self.get_traceback_data(), use_l10n=False)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 381, in get_traceback_data
c["raising_view_name"] = get_caller(self.request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 99, in get_caller
resolver_match = resolve(request.path)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\urls\base.py",
line 24, in resolve
return get_resolver(urlconf).resolve(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 663, in resolve
for pattern in self.url_patterns:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 715, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns",
self.urlconf_module)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 708, in urlconf_module
return import_module(self.urlconf_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\importlib\__init__.py", line 126,
in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in
_find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "C:\code\myproject\myproject\urls.py", line 8, in <module>
path('test/', TestView.as_view()),
^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 119, in as_view
if cls.view_is_async:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 71, in __get__
return self.fget(cls)
^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 73, in view_is_async
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: TestView HTTP handlers must
either be all sync or all async.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
486, in thread_handler
raise exc_info[1]
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 43, in inner
response = await get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\deprecation.py", line 152, in __acall__
response = response or await self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 45, in inner
response = await sync_to_async(
^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
448, in __call__
ret = await asyncio.wait_for(future, timeout=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\tasks.py", line 442, in
wait_for
return await fut
^^^^^^^^^
File "C:\Program Files\Python311\Lib\concurrent\futures\thread.py", line
58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
488, in thread_handler
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 141, in
response_for_exception
response = handle_uncaught_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 182, in
handle_uncaught_exception
return debug.technical_500_response(request, *exc_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 66, in technical_500_response
html = reporter.get_traceback_html()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 396, in get_traceback_html
c = Context(self.get_traceback_data(), use_l10n=False)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 381, in get_traceback_data
c["raising_view_name"] = get_caller(self.request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 99, in get_caller
resolver_match = resolve(request.path)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\urls\base.py",
line 24, in resolve
return get_resolver(urlconf).resolve(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 663, in resolve
for pattern in self.url_patterns:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 715, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns",
self.urlconf_module)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 708, in urlconf_module
return import_module(self.urlconf_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\importlib\__init__.py", line 126,
in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in
_find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "C:\code\myproject\myproject\urls.py", line 8, in <module>
path('test/', TestView.as_view()),
^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 119, in as_view
if cls.view_is_async:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 71, in __get__
return self.fget(cls)
^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 73, in view_is_async
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: TestView HTTP handlers must
either be all sync or all async.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
486, in thread_handler
raise exc_info[1]
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 43, in inner
response = await get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\deprecation.py", line 152, in __acall__
response = response or await self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 45, in inner
response = await sync_to_async(
^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
448, in __call__
ret = await asyncio.wait_for(future, timeout=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\tasks.py", line 442, in
wait_for
return await fut
^^^^^^^^^
File "C:\Program Files\Python311\Lib\concurrent\futures\thread.py", line
58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
488, in thread_handler
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 141, in
response_for_exception
response = handle_uncaught_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 182, in
handle_uncaught_exception
return debug.technical_500_response(request, *exc_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 66, in technical_500_response
html = reporter.get_traceback_html()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 396, in get_traceback_html
c = Context(self.get_traceback_data(), use_l10n=False)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 381, in get_traceback_data
c["raising_view_name"] = get_caller(self.request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 99, in get_caller
resolver_match = resolve(request.path)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\urls\base.py",
line 24, in resolve
return get_resolver(urlconf).resolve(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 663, in resolve
for pattern in self.url_patterns:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 715, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns",
self.urlconf_module)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 708, in urlconf_module
return import_module(self.urlconf_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\importlib\__init__.py", line 126,
in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in
_find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "C:\code\myproject\myproject\urls.py", line 8, in <module>
path('test/', TestView.as_view()),
^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 119, in as_view
if cls.view_is_async:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 71, in __get__
return self.fget(cls)
^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 73, in view_is_async
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: TestView HTTP handlers must
either be all sync or all async.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
486, in thread_handler
raise exc_info[1]
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 43, in inner
response = await get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\deprecation.py", line 152, in __acall__
response = response or await self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 45, in inner
response = await sync_to_async(
^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
448, in __call__
ret = await asyncio.wait_for(future, timeout=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\tasks.py", line 442, in
wait_for
return await fut
^^^^^^^^^
File "C:\Program Files\Python311\Lib\concurrent\futures\thread.py", line
58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
488, in thread_handler
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 141, in
response_for_exception
response = handle_uncaught_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 182, in
handle_uncaught_exception
return debug.technical_500_response(request, *exc_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 66, in technical_500_response
html = reporter.get_traceback_html()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 396, in get_traceback_html
c = Context(self.get_traceback_data(), use_l10n=False)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 381, in get_traceback_data
c["raising_view_name"] = get_caller(self.request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 99, in get_caller
resolver_match = resolve(request.path)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\urls\base.py",
line 24, in resolve
return get_resolver(urlconf).resolve(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 663, in resolve
for pattern in self.url_patterns:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 715, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns",
self.urlconf_module)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 708, in urlconf_module
return import_module(self.urlconf_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\importlib\__init__.py", line 126,
in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in
_find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "C:\code\myproject\myproject\urls.py", line 8, in <module>
path('test/', TestView.as_view()),
^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 119, in as_view
if cls.view_is_async:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 71, in __get__
return self.fget(cls)
^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 73, in view_is_async
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: TestView HTTP handlers must
either be all sync or all async.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
486, in thread_handler
raise exc_info[1]
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 43, in inner
response = await get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\deprecation.py", line 152, in __acall__
response = response or await self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 45, in inner
response = await sync_to_async(
^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
448, in __call__
ret = await asyncio.wait_for(future, timeout=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\tasks.py", line 442, in
wait_for
return await fut
^^^^^^^^^
File "C:\Program Files\Python311\Lib\concurrent\futures\thread.py", line
58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
488, in thread_handler
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 141, in
response_for_exception
response = handle_uncaught_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 182, in
handle_uncaught_exception
return debug.technical_500_response(request, *exc_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 66, in technical_500_response
html = reporter.get_traceback_html()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 396, in get_traceback_html
c = Context(self.get_traceback_data(), use_l10n=False)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 381, in get_traceback_data
c["raising_view_name"] = get_caller(self.request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 99, in get_caller
resolver_match = resolve(request.path)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\urls\base.py",
line 24, in resolve
return get_resolver(urlconf).resolve(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 663, in resolve
for pattern in self.url_patterns:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 715, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns",
self.urlconf_module)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 708, in urlconf_module
return import_module(self.urlconf_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\importlib\__init__.py", line 126,
in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in
_find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "C:\code\myproject\myproject\urls.py", line 8, in <module>
path('test/', TestView.as_view()),
^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 119, in as_view
if cls.view_is_async:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 71, in __get__
return self.fget(cls)
^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 73, in view_is_async
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: TestView HTTP handlers must
either be all sync or all async.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
486, in thread_handler
raise exc_info[1]
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 43, in inner
response = await get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\deprecation.py", line 152, in __acall__
response = response or await self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 45, in inner
response = await sync_to_async(
^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
448, in __call__
ret = await asyncio.wait_for(future, timeout=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\tasks.py", line 442, in
wait_for
return await fut
^^^^^^^^^
File "C:\Program Files\Python311\Lib\concurrent\futures\thread.py", line
58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
488, in thread_handler
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 141, in
response_for_exception
response = handle_uncaught_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 182, in
handle_uncaught_exception
return debug.technical_500_response(request, *exc_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 66, in technical_500_response
html = reporter.get_traceback_html()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 396, in get_traceback_html
c = Context(self.get_traceback_data(), use_l10n=False)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 381, in get_traceback_data
c["raising_view_name"] = get_caller(self.request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 99, in get_caller
resolver_match = resolve(request.path)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\urls\base.py",
line 24, in resolve
return get_resolver(urlconf).resolve(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 663, in resolve
for pattern in self.url_patterns:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 715, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns",
self.urlconf_module)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 708, in urlconf_module
return import_module(self.urlconf_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\importlib\__init__.py", line 126,
in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in
_find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "C:\code\myproject\myproject\urls.py", line 8, in <module>
path('test/', TestView.as_view()),
^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 119, in as_view
if cls.view_is_async:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 71, in __get__
return self.fget(cls)
^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 73, in view_is_async
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: TestView HTTP handlers must
either be all sync or all async.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\code\myproject\venv\Lib\site-
packages\hypercorn\asyncio\task_group.py", line 23, in _handle
await app(scope, receive, send, sync_spawn, call_soon)
File "C:\code\myproject\venv\Lib\site-
packages\hypercorn\app_wrappers.py", line 33, in __call__
await self.app(scope, receive, send)
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\asgi.py", line 155, in __call__
await self.handle(scope, receive, send)
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\asgi.py", line 178, in handle
response = await self.get_response_async(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\base.py", line 162, in get_response_async
response = await self._middleware_chain(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 45, in inner
response = await sync_to_async(
^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
448, in __call__
ret = await asyncio.wait_for(future, timeout=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\tasks.py", line 442, in
wait_for
return await fut
^^^^^^^^^
File "C:\Program Files\Python311\Lib\concurrent\futures\thread.py", line
58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
488, in thread_handler
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 141, in
response_for_exception
response = handle_uncaught_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 182, in
handle_uncaught_exception
return debug.technical_500_response(request, *exc_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 66, in technical_500_response
html = reporter.get_traceback_html()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 396, in get_traceback_html
c = Context(self.get_traceback_data(), use_l10n=False)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 381, in get_traceback_data
c["raising_view_name"] = get_caller(self.request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 99, in get_caller
resolver_match = resolve(request.path)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\urls\base.py",
line 24, in resolve
return get_resolver(urlconf).resolve(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 663, in resolve
for pattern in self.url_patterns:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 715, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns",
self.urlconf_module)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 708, in urlconf_module
return import_module(self.urlconf_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\importlib\__init__.py", line 126,
in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in
_find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "C:\code\myproject\myproject\urls.py", line 8, in <module>
path('test/', TestView.as_view()),
^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 119, in as_view
if cls.view_is_async:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 71, in __get__
return self.fget(cls)
^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 73, in view_is_async
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: TestView HTTP handlers must
either be all sync or all async.

}}}

==
#############################################################################################
==
#############################################################################################

In my personal project this leads to a strange problem with django-ninja

api.py
{{{
from ninja import NinjaAPI

api = NinjaAPI()
}}}

urls.py
{{{
from django.contrib import admin
from django.urls import path

from myproject.api import api
from myproject.views import TestView

urlpatterns = [
path('admin/', admin.site.urls),
path("api/", api.urls),
path('test/', TestView.as_view()),
]
}}}

manage.py devserver:


{{{
C:\code\myproject\venv\Scripts\python.exe C:\code\myproject\manage.py
runserver 8000
Watching for file changes with StatReloader
Performing system checks...

Exception in thread django-main-thread:
Traceback (most recent call last):
File "C:\Program Files\Python311\Lib\threading.py", line 1038, in
_bootstrap_inner
self.run()
File "C:\Program Files\Python311\Lib\threading.py", line 975, in run
self._target(*self._args, **self._kwargs)
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\autoreload.py", line 64, in wrapper
fn(*args, **kwargs)
File "C:\code\myproject\venv\Lib\site-
packages\django\core\management\commands\runserver.py", line 134, in
inner_run
self.check(display_num_errors=True)
File "C:\code\myproject\venv\Lib\site-
packages\django\core\management\base.py", line 475, in check
all_issues = checks.run_checks(
^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\checks\registry.py", line 88, in run_checks
new_errors = check(app_configs=app_configs, databases=databases)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\checks\urls.py", line 14, in check_url_config
return check_resolver(resolver)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\checks\urls.py", line 24, in check_resolver
return check_method()
^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 494, in check
for pattern in self.url_patterns:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 715, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns",
self.urlconf_module)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 708, in urlconf_module
return import_module(self.urlconf_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\importlib\__init__.py", line 126,
in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in
_find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "C:\code\myproject\myproject\urls.py", line 10, in <module>
path('test/', TestView.as_view()),
^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 119, in as_view
if cls.view_is_async:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 71, in __get__
return self.fget(cls)
^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 73, in view_is_async
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: TestView HTTP handlers must
either be all sync or all async.

}}}

With hypercorn:


{{{
(venv) λ hypercorn myproject.asgi:application
[2023-03-31 12:03:33 +0200] [20028] [WARNING] ASGI Framework Lifespan
error, continuing without Lifespan support
[2023-03-31 12:03:33 +0200] [20028] [INFO] Running on
http://127.0.0.1:8000 (CTRL + C to quit)
[2023-03-31 12:03:40 +0200] [20028] [ERROR] Error in ASGI Framework
Traceback (most recent call last):
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
486, in thread_handler
raise exc_info[1]
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 43, in inner
response = await get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\base.py", line 235, in _get_response_async
callback, callback_args, callback_kwargs =
self.resolve_request(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\base.py", line 313, in resolve_request
resolver_match = resolver.resolve(request.path_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 663, in resolve
for pattern in self.url_patterns:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 715, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns",
self.urlconf_module)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 708, in urlconf_module
return import_module(self.urlconf_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\importlib\__init__.py", line 126,
in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in
_find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "C:\code\myproject\myproject\urls.py", line 10, in <module>
path('test/', TestView.as_view()),
^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 119, in as_view
if cls.view_is_async:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 71, in __get__
return self.fget(cls)
^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\views\generic\base.py", line 73, in view_is_async
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: TestView HTTP handlers must
either be all sync or all async.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
486, in thread_handler
raise exc_info[1]
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 43, in inner
response = await get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\deprecation.py", line 152, in __acall__
response = response or await self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 45, in inner
response = await sync_to_async(
^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
448, in __call__
ret = await asyncio.wait_for(future, timeout=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\tasks.py", line 442, in
wait_for
return await fut
^^^^^^^^^
File "C:\Program Files\Python311\Lib\concurrent\futures\thread.py", line
58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
488, in thread_handler
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 141, in
response_for_exception
response = handle_uncaught_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 182, in
handle_uncaught_exception
return debug.technical_500_response(request, *exc_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 66, in technical_500_response
html = reporter.get_traceback_html()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 396, in get_traceback_html
c = Context(self.get_traceback_data(), use_l10n=False)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 381, in get_traceback_data
c["raising_view_name"] = get_caller(self.request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 99, in get_caller
resolver_match = resolve(request.path)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\urls\base.py",
line 24, in resolve
return get_resolver(urlconf).resolve(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 663, in resolve
for pattern in self.url_patterns:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 715, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns",
self.urlconf_module)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 708, in urlconf_module
return import_module(self.urlconf_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\importlib\__init__.py", line 126,
in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in
_find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "C:\code\myproject\myproject\urls.py", line 9, in <module>
path("api/", api.urls),
^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\ninja\main.py", line 379,
in urls
self._validate()
File "C:\code\myproject\venv\Lib\site-packages\ninja\main.py", line 494,
in _validate
raise ConfigError(msg.strip())
ninja.errors.ConfigError: Looks like you created multiple NinjaAPIs or
TestClients
To let ninja distinguish them you need to set either unique version or
urls_namespace
- NinjaAPI(..., version='2.0.0')
- NinjaAPI(..., urls_namespace='otherapi')
Already registered: ['api-1.0.0']

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
486, in thread_handler
raise exc_info[1]
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 43, in inner
response = await get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\deprecation.py", line 152, in __acall__
response = response or await self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 45, in inner
response = await sync_to_async(
^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
448, in __call__
ret = await asyncio.wait_for(future, timeout=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\tasks.py", line 442, in
wait_for
return await fut
^^^^^^^^^
File "C:\Program Files\Python311\Lib\concurrent\futures\thread.py", line
58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
488, in thread_handler
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 141, in
response_for_exception
response = handle_uncaught_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 182, in
handle_uncaught_exception
return debug.technical_500_response(request, *exc_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 66, in technical_500_response
html = reporter.get_traceback_html()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 396, in get_traceback_html
c = Context(self.get_traceback_data(), use_l10n=False)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 381, in get_traceback_data
c["raising_view_name"] = get_caller(self.request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 99, in get_caller
resolver_match = resolve(request.path)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\urls\base.py",
line 24, in resolve
return get_resolver(urlconf).resolve(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 663, in resolve
for pattern in self.url_patterns:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 715, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns",
self.urlconf_module)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 708, in urlconf_module
return import_module(self.urlconf_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\importlib\__init__.py", line 126,
in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in
_find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "C:\code\myproject\myproject\urls.py", line 9, in <module>
path("api/", api.urls),
^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\ninja\main.py", line 379,
in urls
self._validate()
File "C:\code\myproject\venv\Lib\site-packages\ninja\main.py", line 494,
in _validate
raise ConfigError(msg.strip())
ninja.errors.ConfigError: Looks like you created multiple NinjaAPIs or
TestClients
To let ninja distinguish them you need to set either unique version or
urls_namespace
- NinjaAPI(..., version='2.0.0')
- NinjaAPI(..., urls_namespace='otherapi')
Already registered: ['api-1.0.0']

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
486, in thread_handler
raise exc_info[1]
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 43, in inner
response = await get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\deprecation.py", line 152, in __acall__
response = response or await self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 45, in inner
response = await sync_to_async(
^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
448, in __call__
ret = await asyncio.wait_for(future, timeout=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\tasks.py", line 442, in
wait_for
return await fut
^^^^^^^^^
File "C:\Program Files\Python311\Lib\concurrent\futures\thread.py", line
58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
488, in thread_handler
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 141, in
response_for_exception
response = handle_uncaught_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 182, in
handle_uncaught_exception
return debug.technical_500_response(request, *exc_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 66, in technical_500_response
html = reporter.get_traceback_html()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 396, in get_traceback_html
c = Context(self.get_traceback_data(), use_l10n=False)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 381, in get_traceback_data
c["raising_view_name"] = get_caller(self.request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 99, in get_caller
resolver_match = resolve(request.path)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\urls\base.py",
line 24, in resolve
return get_resolver(urlconf).resolve(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 663, in resolve
for pattern in self.url_patterns:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 715, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns",
self.urlconf_module)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 708, in urlconf_module
return import_module(self.urlconf_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\importlib\__init__.py", line 126,
in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in
_find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "C:\code\myproject\myproject\urls.py", line 9, in <module>
path("api/", api.urls),
^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\ninja\main.py", line 379,
in urls
self._validate()
File "C:\code\myproject\venv\Lib\site-packages\ninja\main.py", line 494,
in _validate
raise ConfigError(msg.strip())
ninja.errors.ConfigError: Looks like you created multiple NinjaAPIs or
TestClients
To let ninja distinguish them you need to set either unique version or
urls_namespace
- NinjaAPI(..., version='2.0.0')
- NinjaAPI(..., urls_namespace='otherapi')
Already registered: ['api-1.0.0']

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
486, in thread_handler
raise exc_info[1]
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 43, in inner
response = await get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\deprecation.py", line 152, in __acall__
response = response or await self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 45, in inner
response = await sync_to_async(
^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
448, in __call__
ret = await asyncio.wait_for(future, timeout=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\tasks.py", line 442, in
wait_for
return await fut
^^^^^^^^^
File "C:\Program Files\Python311\Lib\concurrent\futures\thread.py", line
58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
488, in thread_handler
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 141, in
response_for_exception
response = handle_uncaught_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 182, in
handle_uncaught_exception
return debug.technical_500_response(request, *exc_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 66, in technical_500_response
html = reporter.get_traceback_html()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 396, in get_traceback_html
c = Context(self.get_traceback_data(), use_l10n=False)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 381, in get_traceback_data
c["raising_view_name"] = get_caller(self.request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 99, in get_caller
resolver_match = resolve(request.path)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\urls\base.py",
line 24, in resolve
return get_resolver(urlconf).resolve(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 663, in resolve
for pattern in self.url_patterns:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 715, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns",
self.urlconf_module)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 708, in urlconf_module
return import_module(self.urlconf_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\importlib\__init__.py", line 126,
in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in
_find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "C:\code\myproject\myproject\urls.py", line 9, in <module>
path("api/", api.urls),
^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\ninja\main.py", line 379,
in urls
self._validate()
File "C:\code\myproject\venv\Lib\site-packages\ninja\main.py", line 494,
in _validate
raise ConfigError(msg.strip())
ninja.errors.ConfigError: Looks like you created multiple NinjaAPIs or
TestClients
To let ninja distinguish them you need to set either unique version or
urls_namespace
- NinjaAPI(..., version='2.0.0')
- NinjaAPI(..., urls_namespace='otherapi')
Already registered: ['api-1.0.0']

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
486, in thread_handler
raise exc_info[1]
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 43, in inner
response = await get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\deprecation.py", line 152, in __acall__
response = response or await self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 45, in inner
response = await sync_to_async(
^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
448, in __call__
ret = await asyncio.wait_for(future, timeout=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\tasks.py", line 442, in
wait_for
return await fut
^^^^^^^^^
File "C:\Program Files\Python311\Lib\concurrent\futures\thread.py", line
58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
488, in thread_handler
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 141, in
response_for_exception
response = handle_uncaught_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 182, in
handle_uncaught_exception
return debug.technical_500_response(request, *exc_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 66, in technical_500_response
html = reporter.get_traceback_html()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 396, in get_traceback_html
c = Context(self.get_traceback_data(), use_l10n=False)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 381, in get_traceback_data
c["raising_view_name"] = get_caller(self.request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 99, in get_caller
resolver_match = resolve(request.path)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\urls\base.py",
line 24, in resolve
return get_resolver(urlconf).resolve(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 663, in resolve
for pattern in self.url_patterns:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 715, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns",
self.urlconf_module)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 708, in urlconf_module
return import_module(self.urlconf_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\importlib\__init__.py", line 126,
in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in
_find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "C:\code\myproject\myproject\urls.py", line 9, in <module>
path("api/", api.urls),
^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\ninja\main.py", line 379,
in urls
self._validate()
File "C:\code\myproject\venv\Lib\site-packages\ninja\main.py", line 494,
in _validate
raise ConfigError(msg.strip())
ninja.errors.ConfigError: Looks like you created multiple NinjaAPIs or
TestClients
To let ninja distinguish them you need to set either unique version or
urls_namespace
- NinjaAPI(..., version='2.0.0')
- NinjaAPI(..., urls_namespace='otherapi')
Already registered: ['api-1.0.0']

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
486, in thread_handler
raise exc_info[1]
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 43, in inner
response = await get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\deprecation.py", line 152, in __acall__
response = response or await self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 45, in inner
response = await sync_to_async(
^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
448, in __call__
ret = await asyncio.wait_for(future, timeout=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\tasks.py", line 442, in
wait_for
return await fut
^^^^^^^^^
File "C:\Program Files\Python311\Lib\concurrent\futures\thread.py", line
58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
488, in thread_handler
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 141, in
response_for_exception
response = handle_uncaught_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 182, in
handle_uncaught_exception
return debug.technical_500_response(request, *exc_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 66, in technical_500_response
html = reporter.get_traceback_html()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 396, in get_traceback_html
c = Context(self.get_traceback_data(), use_l10n=False)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 381, in get_traceback_data
c["raising_view_name"] = get_caller(self.request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 99, in get_caller
resolver_match = resolve(request.path)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\urls\base.py",
line 24, in resolve
return get_resolver(urlconf).resolve(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 663, in resolve
for pattern in self.url_patterns:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 715, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns",
self.urlconf_module)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 708, in urlconf_module
return import_module(self.urlconf_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\importlib\__init__.py", line 126,
in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in
_find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "C:\code\myproject\myproject\urls.py", line 9, in <module>
path("api/", api.urls),
^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\ninja\main.py", line 379,
in urls
self._validate()
File "C:\code\myproject\venv\Lib\site-packages\ninja\main.py", line 494,
in _validate
raise ConfigError(msg.strip())
ninja.errors.ConfigError: Looks like you created multiple NinjaAPIs or
TestClients
To let ninja distinguish them you need to set either unique version or
urls_namespace
- NinjaAPI(..., version='2.0.0')
- NinjaAPI(..., urls_namespace='otherapi')
Already registered: ['api-1.0.0']

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
486, in thread_handler
raise exc_info[1]
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 43, in inner
response = await get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\deprecation.py", line 152, in __acall__
response = response or await self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 45, in inner
response = await sync_to_async(
^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
448, in __call__
ret = await asyncio.wait_for(future, timeout=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\tasks.py", line 442, in
wait_for
return await fut
^^^^^^^^^
File "C:\Program Files\Python311\Lib\concurrent\futures\thread.py", line
58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
488, in thread_handler
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 141, in
response_for_exception
response = handle_uncaught_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 182, in
handle_uncaught_exception
return debug.technical_500_response(request, *exc_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 66, in technical_500_response
html = reporter.get_traceback_html()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 396, in get_traceback_html
c = Context(self.get_traceback_data(), use_l10n=False)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 381, in get_traceback_data
c["raising_view_name"] = get_caller(self.request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 99, in get_caller
resolver_match = resolve(request.path)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\urls\base.py",
line 24, in resolve
return get_resolver(urlconf).resolve(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 663, in resolve
for pattern in self.url_patterns:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 715, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns",
self.urlconf_module)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 708, in urlconf_module
return import_module(self.urlconf_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\importlib\__init__.py", line 126,
in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in
_find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "C:\code\myproject\myproject\urls.py", line 9, in <module>
path("api/", api.urls),
^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\ninja\main.py", line 379,
in urls
self._validate()
File "C:\code\myproject\venv\Lib\site-packages\ninja\main.py", line 494,
in _validate
raise ConfigError(msg.strip())
ninja.errors.ConfigError: Looks like you created multiple NinjaAPIs or
TestClients
To let ninja distinguish them you need to set either unique version or
urls_namespace
- NinjaAPI(..., version='2.0.0')
- NinjaAPI(..., urls_namespace='otherapi')
Already registered: ['api-1.0.0']

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\code\myproject\venv\Lib\site-
packages\hypercorn\asyncio\task_group.py", line 23, in _handle
await app(scope, receive, send, sync_spawn, call_soon)
File "C:\code\myproject\venv\Lib\site-
packages\hypercorn\app_wrappers.py", line 33, in __call__
await self.app(scope, receive, send)
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\asgi.py", line 155, in __call__
await self.handle(scope, receive, send)
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\asgi.py", line 178, in handle
response = await self.get_response_async(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\base.py", line 162, in get_response_async
response = await self._middleware_chain(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 45, in inner
response = await sync_to_async(
^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
448, in __call__
ret = await asyncio.wait_for(future, timeout=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\tasks.py", line 442, in
wait_for
return await fut
^^^^^^^^^
File "C:\Program Files\Python311\Lib\concurrent\futures\thread.py", line
58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\asgiref\sync.py", line
488, in thread_handler
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 141, in
response_for_exception
response = handle_uncaught_exception(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\core\handlers\exception.py", line 182, in
handle_uncaught_exception
return debug.technical_500_response(request, *exc_info)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 66, in technical_500_response
html = reporter.get_traceback_html()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 396, in get_traceback_html
c = Context(self.get_traceback_data(), use_l10n=False)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 381, in get_traceback_data
c["raising_view_name"] = get_caller(self.request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\views\debug.py",
line 99, in get_caller
resolver_match = resolve(request.path)
^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\django\urls\base.py",
line 24, in resolve
return get_resolver(urlconf).resolve(path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 663, in resolve
for pattern in self.url_patterns:
^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 715, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns",
self.urlconf_module)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\utils\functional.py", line 57, in __get__
res = instance.__dict__[self.name] = self.func(instance)
^^^^^^^^^^^^^^^^^^^
File "C:\code\myproject\venv\Lib\site-
packages\django\urls\resolvers.py", line 708, in urlconf_module
return import_module(self.urlconf_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\importlib\__init__.py", line 126,
in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in
_find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "C:\code\myproject\myproject\urls.py", line 9, in <module>
path("api/", api.urls),
^^^^^^^^
File "C:\code\myproject\venv\Lib\site-packages\ninja\main.py", line 379,
in urls
self._validate()
File "C:\code\myproject\venv\Lib\site-packages\ninja\main.py", line 494,
in _validate
raise ConfigError(msg.strip())
ninja.errors.ConfigError: Looks like you created multiple NinjaAPIs or
TestClients
To let ninja distinguish them you need to set either unique version or
urls_namespace
- NinjaAPI(..., version='2.0.0')
- NinjaAPI(..., urls_namespace='otherapi')
Already registered: ['api-1.0.0']
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/34451>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
Mar 31, 2023, 6:48:26 AM3/31/23
to django-...@googlegroups.com
#34451: Incorrect handling of ImproperlyConfigured Exception in views in ASGI
context
--------------------------------+--------------------------------------

Reporter: Michael Galler | Owner: nobody
Type: Bug | Status: new
Component: Uncategorized | Version: 4.1
Severity: Normal | Resolution:

Keywords: | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
--------------------------------+--------------------------------------
Description changed by Mariusz Felisiak:

Old description:

> start with
>

> {{{
> django-admin startproject myproject
> }}}
>

New description:

start with


{{{
django-admin startproject myproject
}}}

views.py
{{{

from django.views.generic import FormView


class TestView(FormView):

from myproject.views import TestView

}}}

... (the same frame over and over again)
}}}


==
#############################################################################################

api = NinjaAPI()
}}}

manage.py devserver:

}}}

With hypercorn:

... (the same frame over and over again)
}}}

--

--
Ticket URL: <https://code.djangoproject.com/ticket/34451#comment:1>

Django

unread,
Mar 31, 2023, 6:49:34 AM3/31/23
to django-...@googlegroups.com

Old description:

> start with
>

> {{{
> django-admin startproject myproject
> }}}
>

New description:

start with

{{{
django-admin startproject myproject
}}}

views.py
{{{

from django.views.generic import FormView


class TestView(FormView):

from myproject.views import TestView

}}}

-----

api = NinjaAPI()
}}}

manage.py devserver:

}}}

With hypercorn:

--

--
Ticket URL: <https://code.djangoproject.com/ticket/34451#comment:2>

Django

unread,
Mar 31, 2023, 7:20:22 AM3/31/23
to django-...@googlegroups.com
#34451: Incorrect handling of ImproperlyConfigured Exception in views in ASGI
context
--------------------------------+--------------------------------------
Reporter: Michael Galler | Owner: nobody
Type: Bug | Status: closed
Component: Core (Other) | Version: 4.1
Severity: Normal | Resolution: invalid

Keywords: | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
--------------------------------+--------------------------------------
Changes (by Mariusz Felisiak):

* cc: asgi (added)
* resolution: => invalid
* status: new => closed
* component: Uncategorized => Core (Other)


Comment:

Hi, thanks for the report, however, I don't think you've explained the
issue in enough detail to confirm a bug in Django. It works fine with
Django built-in `runserver` and with `daphne`'s `runserver` (see
[https://docs.djangoproject.com/en/dev/howto/deployment/asgi/daphne/
docs]). The repeated frame (5-6 times) in a non-development web servers
doesn't look like an issue in Django itself.

TBH, I think it's an issue in web servers. For example, it works properly
when I change `ImproperlyConfigured` class to inherit from `BaseException`
instead of `Exception`, but that should not be the case as `BaseException`
[https://docs.python.org/3/library/exceptions.html?highlight=baseexception#BaseException
is not intended to be directly inherited] from user-defined exceptions.

IMO, you should try to report it in web server bug trackers or in Python
itself (check for duplicated first).

--
Ticket URL: <https://code.djangoproject.com/ticket/34451#comment:3>

Reply all
Reply to author
Forward
0 new messages