Есть ли способ развернуть проект Django на namecheap в режиме ASGI?
Я пытаюсь развернуть свой Django на Namecheap, сервер должен работать, но я получил следующее сообщение traceback:
[ERROR] [UID:12123][2655752] wsgiAppHandler pApp->start_response() return NULL. Traceback (most recent call last): File "/home/alshigpf/website/passenger_wsgi.py", line 41, in __call__ return self.app(environ, start_response) TypeError: __call__() missing 1 required positional argument: 'send' [ERROR] [UID:12123][2655752] wsgiAppHandler pApp->start_response() return NULL. Traceback (most recent call last): File "/home/alshigpf/website/passenger_wsgi.py", line 41, in __call__ return self.app(environ, start_response) TypeError: __call__() missing 1 required positional argument: 'send'
Вот как выглядит мой файл passenger_wsgi.py:
import os
import sys
import django
sys.path.append(os.getcwd())
os.environ['DJANGO_SETTINGS_MODULE'] = 'website.settings.development'
django.setup()
SCRIPT_NAME = os.getcwd()
print("Script name: ", SCRIPT_NAME)
class PassengerPathInfoFix(object):
"""
Sets PATH_INFO from REQUEST_URI because Passenger doesn't provide it.
"""
def __init__(self, app):
self.app = app
print("Start Init")
print("App is: ", self.app)
print("End Init")
def __call__(self, environ, start_response):
from urllib.parse import unquote
print("Start Calling")
environ['SCRIPT_NAME'] = SCRIPT_NAME
request_uri = unquote(environ['REQUEST_URI'])
script_name = unquote(environ.get('SCRIPT_NAME', ''))
offset = request_uri.startswith(script_name) and len(environ['SCRIPT_NAME']) or 0
environ['PATH_INFO'] = request_uri[offset:].split('?', 1)[0]
return self.app(environ, start_response)
# Get ASGI application
from website.routing import application
print("Before calling application")
application = PassengerPathInfoFix(application)
Когда я погуглил, то увидел, что существует нечто под названием "Uvicorn", которое является обновленной версией Gunicorn для работы в режиме ASGI.
Когда я сделал расширенный поиск в google, чтобы посмотреть, говорят ли namecheap.com об использовании uvicorn, я не нашел ничего связанного с этой проблемой.
Итак, мой вопрос: как я могу игнорировать эту проблему, по-прежнему используя режим ASGI вместо WSGI?