Issue
I am trying to use the very new Django 3.1
Async view classes.
Based on the limited documentation available, I have tried to create my own async def __call__()
method.
From the documents:
For a class-based view, this means making its
__call__()
method anasync def
(not its__init__()
oras_view()
).
Django 3.1 Development Documents
However, until now I have had no luck with writing an asynchronous class based view. I constantly get await
exceptions, or asyncio.iscoroutinefunction
returns False
, which I assume should return true if the class is actually Asynchronous.
Since the documentation is lacking an example, could someone with more knowledge of async programming help me with an example of a class based asynchronous view?
Solution
Spend quite some time searching in the Django ticket system, blogposts (thx to Joren), etc. so you don't have to.
The best you can do is using the code from the blog:
class YourView(View):
@classonlymethod
def as_view(cls, **initkwargs):
view = super().as_view(**initkwargs)
view._is_coroutine = asyncio.coroutines._is_coroutine
return view
async def get(self, *args, **kwargs):
...
But you also need to be aware there is no way you can use actual generics (no async ORM support, even TemplateView doesn't work) and build-in decorators for 3.1. You need to write your own stuff for things that Django normally does itself.
Answered By - Zorking
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.