Цитата с неба как то опровергает все аргументы, которые были приведены в комментариях к этому топику? Или есть контраргументы в стиле «это хреново, потому что», и дальше технические, а не умозрительные, «мне кажется», аргументы?
Черт, не понимаю, почему бы и нет? Чем django так элитарна, что ее нельзя заставить работать асинхронно? Почему бы не использовать асинхронность? Nginx сильно поиграл от нее? Tornado проиграл? Или быть может Node.js неюзабельный отстой? Давайте конкретно — чем плоха асинхронная Django? Да, она не даст вам скорости Node.js, так как Python в текущей реализации в C код не транслируется на лету, но выжать заветные 5-10% (и это чисто умозрительная прикидка), чем это плохо?
По-моему гораздо наивнее начать переписывать код на C++.
Писать код не на C/C++ дешевле и быстрее. Если у вас миллион клиентов, то уже другие суммы у вас будут — то ли этот миллион обслужится сотней серверов, то ли тремяста серверами, по-моему разница на лицо. Если можно выжать еще 5-10 процентов, то это надо сделать, тем более, что это дешево и быстро.
Во-первых прекрасно понятно как — подводных камней нет, или по крайней мере с ними все понятно. А теперь начинаем считать стоимость разработки с нуля всего кода, что уже есть. Затем вспоминаем, что программирование на C++ это известный ужас, в сравнении с Python, и стоить будет еще дороже. Итак, пару дней на допил моего варианта, или всё с нуля, и с песнями, и еще кучу денег на зарплаты программистам, а дедлайн как нибудь потом?
Если вы хорошо понимаете внутренности того и другого — ничего опасного не вижу. Фреймворк написан в потоко-безопасном стиле, и мои скромные познания подсказывают мне, что и с гринлетами проблемы не будет. Привет хитрецам со thread local!: )
Кстати, нашел недостаток подхода, как мне кажется. В pgasync есть пул соединений. Когда вы запрашиваете соединение, то на самом деле ничего не происходит, интересное начнется только в момент получения курсора, из пула вам выделят соединение.
Это решает проблему, что будет, если к вам придет 100 пользователей в секунду — получите ли вы 100 подключений к БД? По-моему это не очень хорошо. Второе это установка соединения — синхронный код ничего не знает о пуле, и вполне способен устанавливать соединение на каждый запрос.
Это как раз момент, с которым я немного подвис с pgasync — думаю как лучше работать с пулом, когда возвращать подключение в пул.
Можно Svarga тогда смело запускать, он на SQLAlchemy крутится. А для Django в любом случае надо будет написать свой БД бэкенд для pg8000 или mysql-connector, и тоже запустить, дело часа.
Войн в библии ни разу не меньше. Правда описаны несколько отлично — «и было их 2000, а врагов их было 15000, но направил Господь их копья, и победили они.» Вариация на тему.
По-моему гораздо наивнее начать переписывать код на C++.
Это решает проблему, что будет, если к вам придет 100 пользователей в секунду — получите ли вы 100 подключений к БД? По-моему это не очень хорошо. Второе это установка соединения — синхронный код ничего не знает о пуле, и вполне способен устанавливать соединение на каждый запрос.
Это как раз момент, с которым я немного подвис с pgasync — думаю как лучше работать с пулом, когда возвращать подключение в пул.