@tiger_13

Как запустить asyncio на wsgi?

Всем привет!
Есть TCP сервер, написанный на asyncio. За основу взят пример из документации asyncio и добавлена в него логика (название файла - app.py):
import asyncio

async def handle_echo(reader, writer):
    data = await reader.read(100)
    message = data.decode()
    addr = writer.get_extra_info('peername')
    print("Received %r from %r" % (message, addr))

    print("Send: %r" % message)
    writer.write(data)
    await writer.drain()

    print("Close the client socket")
    writer.close()

loop = asyncio.get_event_loop()
coro = asyncio.start_server(handle_echo, '0.0.0.0', 8888, loop=loop)
server = loop.run_until_complete(coro)

# Serve requests until Ctrl+C is pressed
print('Serving on {}'.format(server.sockets[0].getsockname()))
try:
    loop.run_forever()
except KeyboardInterrupt:
    pass

# Close the server
server.close()
loop.run_until_complete(server.wait_closed())
loop.close()


Есть VPS на нем стоит Ubuntu 19.10, и Apache2.
Хочу запустить сервер на mod_wsgi. Подскажите, пожалуйста, как написать .wsgi файл (WSGIScriptAlias)?

Правильно ли я понимаю, что будет достаточно (учитывая что server находится в файле app.py):
from app import server as application

правильно ли написан .conf файл? (там где IP - указан IP адрес)
<VirtualHost IP:8888>
    ErrorLog /var/www/project_name/apache_errors.log
    WSGIScriptAlias / /var/www/project_name/project_name.wsgi

    <Directory /var/www/project_name>
        WSGIProcessGroup project_name
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
    </Directory>
</VirtualHost>


перезагружаю apache2, пробую отправить TCP сокет через клиент, но клиент не видит сервер. apache_errors.log пустой
  • Вопрос задан
  • 49 просмотров
Решения вопроса 2
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
WSGI предназначен для интеграции web-серверов с синхронными приложениями. Асинхронный код лучше запускать как самостоятельный сервер и пробрасывать из Apache запросы с помощью mod_proxy. Ещё лучше использовать Nginx вместо Apache.
Ответ написан
@bacon
Для асинхронных свой протокол есть - ASGI и я сомневаюсь, что под apache есть реализация.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы