Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

TypeError: __call__() missing 1 required positional argument: 'send' Django

When I run the project through the gunicorn (command: gunicorn --bind :8000 myproject.asgi:application), I get this error.

Error

Traceback (most recent call last):
  File "/venv/lib/python3.8/site-packages/gunicorn/workers/sync.py", line 136, in handle
    self.handle_request(listener, req, client, addr)
  File "/venv/lib/python3.8/site-packages/gunicorn/workers/sync.py", line 179, in handle_request
    respiter = self.wsgi(environ, resp.start_response)
TypeError: __call__() missing 1 required positional argument: 'send'

asgi.py

import os
from django.core.asgi import get_asgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings.base')
django_asgi_app = get_asgi_application()

from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter

from channels.security.websocket import AllowedHostsOriginValidator
from chats import routing

application = ProtocolTypeRouter({
    "http": django_asgi_app,
    "websocket": AllowedHostsOriginValidator(
        AuthMiddlewareStack(
            URLRouter(
                routing.websocket_urlpatterns
            )
        )
    ),
})

chats.routing.py

from django.urls import re_path

from . import consumers

websocket_urlpatterns = [
    re_path(r'ws/messages/(?P<username>[-:\w]+)/$', consumers.ChatConsumer.as_asgi()),
]

like image 725
Sultan Syidaliev Avatar asked Jun 30 '21 12:06

Sultan Syidaliev


People also ask

How do I fix TypeError missing one required positional argument?

The Python "TypeError: __init__() missing 1 required positional argument" occurs when we forget to provide a required argument when instantiating a class. To solve the error, specify the argument when instantiating the class or set a default value for the argument.

How do you fix missing positional arguments in python?

The Python "TypeError: missing 2 required positional arguments" occurs when we forget to provide 2 required arguments when calling a function or method. To solve the error, specify the arguments when calling the function or set default values for the arguments.


1 Answers

There is an issue on github similar to your problem

Answer: Likely you missed the as_asgi() in your routing.py

like image 196
George Y Avatar answered Oct 20 '22 06:10

George Y