Задача: Реализовать общение между Garry's Mod сервером и Django.
Описание:
Разрабатываю портал, хочется сделать его как можно связаннее с сервером. Все MySql таблицы описаны в Django для удобной работы с ними. Игровой сервер и Django на одной машине (Debain). В планах добавить WebSocket. В Garry's Mode используется LUA.
Cхема:
Игрок заходит на игровой сервер ->
Просим Django дать нам о нем данные (Кол-во убийств, последний заход и т.д.) ->
Django ищет в MySql этого игрока и возвращает данные игровому серверу ->
Работаем на игровом сервере с этими данными (Выводим статистику в чат) ->
На сервере произошло событие (Игрок убил другого игрока) ->
Сообщаем об этом Django и передаем некоторые данные (SteamID обоих игроков) ->
Django реализует некоторую логику (Ищет в MySql обоих игроков) ->
В MySql записывается результат (Добавили первому игроку 1 убийство, второму 1 смерть)
Варианты решения:
1) Первый который сразу пришел в голову TCP, но т.к. Django синхронный пришлось копать в сторону асинхронных реализаций типо Twisted, Tornado и т.д. В итоге нашел Orbited и все вылилось в такую вот схемку
Как мне показалось, это слишком сложно, хотя возможно самое правильное решение.
2) Затем вспомнил про Redis, но опять таки Django синхронный, возникает та же схема.
3) Самое простое решение, реализовать на Django API и вызывать его с игрового сервера.
Вполне возможно что я где-то ошибаюсь, т.к. полез во все эти дебри только из-за этой надобности, до этого лишь не много игрался с NodeJS и при выборе асинхронного сервер так же подумал о нем, но быстро отмел т.к. не хочется использовать слишком много разных технологий.
Так же если все таки и делать с использованием асинхронного сервера, хотелось бы сразу там прикрутить WebSocket.