« first day (1657 days earlier)      last day (38 days later) » 

7:31 AM
@edem площадь вообще ни при чём. Самолёты, если что, летают с ненулевым углом атаки.
 
 
2 hours later…
9:34 AM
Всем привет! Нужен совет насчёт Python/Django. Я разрабатываю веб-приложение, которое использует медленное внешнее АПИ, и в виду синхронности Django, это блокирует весь бэкэнд... Что можно сделать для обхода этой проблемы?
Знаю, что долгий код обычно выкидывают в фон (типа Celery), но здесь так никак т.к юзеру нужно получить ответ от того внешнего АПИ.
Было бы здорово использовать WebSockets, asyncio, но Джанго с этим адекватно не работает, а мне нужна безопасность (которая у Джанго из коробки) и проверять, что запрос от корректного юзера.
 
9:58 AM
@AivanF. ку-ку. Обязательно django?
 
Нет, но хотелось бы – в виду множества полезных встроенных фич.
 
Можно таски на вызов апи кидать к очередь, а разребать её будет уже что-нить несинхронное.
 
@Suvitruf но я уже посматриваю в сторону aiohttp
 
Разгребать можно тем же питоном. Просто наспамит 5 процессов, которые будут очередь разгребать.
 
@Suvitruf Но как тогда юзер получит свой ответ?
 
10:02 AM
@AivanF. не знаю, как с этим в питоне =/
Лучше вопрос на сайте задать. Думаю, найдутся умельцы.
 
@Suvitruf Боюсь, это слишком дискуссионный вопрос)
Но я наверное всё же в aiohttp пойду – там вроде есть оф либы для безопасной авторизации и ORM, а мне больше и не надо.
 
 
2 hours later…
11:40 AM
0
Q: Хранит ли сервер полную историю «свежих правок»?

andreymalНаблюдаю следующую ситуацию: пользователь создаёт вопрос и публикует в нём пароль; через минуту до него доходит, что он сделал, и через правку стирает пароль; так как «grace period» ещё не прошёл, эта правка не видна на сайте, и другие пользователи не могут посмотреть исходную версию вопроса и ...

 
@AivanF. дождаться, когда в Django запилят асинхронщину)
@AivanF. а касательно вебсокетов у Django есть костыль под названием Channels, в котором как раз есть вебсокеты на асинхронщине, на первый взгляд вроде даже что-то адекватное (но лично не пользовал)
 
12:01 PM
@andreymal Ждать не вариант)
@andreymal Тоже поникла в эти Channels, и даже ещё не полностью отложил идею о его использовании... Но выглядит как-то весьма костыльно, особенно после опыта использования Tornado, где подобное доступно из коробки. Но Торнадо опять использовать не хочу, мне кажется он слишком громоздкий, да и уже не такой производительный. Поэтому и смотрю в сторону aiohttp.
 
12:20 PM
1
Q: У непрочитанных уведомлений неправильный размер ссылки

QwertiyУ непрочитанных уведомлений есть жирные отступы, которые не являются ссылкой, но подсвечиваются как часть уведомления: Соответственно, нужный мне пункт для открытия в новой вкладке там не показывается, хотя если кликать более центральную часть, то всё хорошо: Надо сделать так, чтобы...

 
 
2 hours later…
2:45 PM
@AivanF. Если что, вам совершенно необязательно делать весь бэк на одной и той же технологии. Можно сделать два разных сервера, один для быстрых задач, второй для долгих.
А спрятать эту сложность можно за nginx. Или можно не прятать...
 
3:10 PM
@PavelMayorov Спасибо за ответ) я тоже об этом думал, но тогда получится, что в сервисе не на Django надо будет городить самодельную проверку авторизации... В принципе, нормальный подход, но для конкретно этого проекта я решил, что лучше использовать другое стороннее АПИ – там несколько другой принцип работы, и описанная проблема решится довольно естественным образом.
@PavelMayorov Даа, колдовство с NginX – наше всё 😅👍 Сегодня вот через конфиг NginX приделал небольшой механизм авторизации к мониторинговой системе, в которой это не предусмотрено.
 
@AivanF. такое обычно решается прикручиванием oauth к основному проекту + bearer token authentication со стороны допсервиса
@AivanF. мы так старый монолит на MS стеке (asp.net, windows) переселяем на микросервисы (asp.net core, linux) - поставили nginx перед ним, и переносим по чуть-чуть
 
@PashaPash Хороший подход:) У меня знакомый на MS стеке тем же недавно занимался
@PashaPash Спасибо, буду знать
 

« first day (1657 days earlier)      last day (38 days later) »