Size: a a a

2020 April 28

ИК

Иван Кривошеев in rannts
Но в проде я ниразу её не использова...
источник

D

Dmitry in rannts
Sergey Z
а подскажите мне про джангу.
у меня есть вьюшка, которая принимает запрос, записывает часть данных, отдаёт ответ.
оставшуюся часть данных всё ещё надо дозаписать как-то запросив из внешнего источника.

может ли вьюшка породить каким-то образом фоновую (асинхронную?) функцию?

я уже читаю про поддержку асинхронщины в джанге.

вполне вероятно что мой вопрос совершенно глупый, так как я в асинхронщину в питоне совсем не умею.
Если надо совсем просто и нужны только средства Джанго. Тогда пишется менедж - команда джанговая, которая периодически вызывается кроном. А в менедж команде никто не запрещает юзать concurrent.futures😊
источник

SZ

Sergey Z in rannts
документация джанго говорит что использование ORM внутри асинхронного контекста будет генерировать исключение всегда
источник

SZ

Sergey Z in rannts
я не проверял ибо не умею, но всецело доверяю тому что пишут авторы джанги и проверять не хочу
источник

D

Dmitry in rannts
Так не используй😊 Причем тут manage команда то😊
источник

D

Dmitry in rannts
Я к тому, что твоя проблема решаема за счёт многопоточной крон-таски
источник

SZ

Sergey Z in rannts
путём многопоточной кронтаски я притащу в свой контенер собственно крон.
не то чтобы это такая уж большая проблема, но решая одну проблему не хочется приносить другую
источник

D

Dmitry in rannts
Крон в контейнере- это не страшно😊 Так или иначе придется притащить в контейнер, то, что реализует очередь
источник

БС

Байт Словович in rannts
Sergey Z
путём многопоточной кронтаски я притащу в свой контенер собственно крон.
не то чтобы это такая уж большая проблема, но решая одну проблему не хочется приносить другую
все зависит от того насколько важен результат и не проебать задачу.
Если тебе не важен 100% результат и не нужен контроль над процессом обработки, то есть  в случае чего кто-то повторит запрос вручную, то просто создай тред и в нём реализуй свою логику.

Если нужны хоть какие то гарантии, то celery или аналог прийдется втаскивать вместе с очередью сообщений и кучей соответствующего стафа.

async не используй без резкой необходимости. Сто раз подумай перед тем как перейти на черную сторону async. Перейдя, обратной дороги не будет.

cron как вариант, но тебе прийдется самому реализовывать недоочередь в своей базе данных.  Если нет наработок, то проще всунуть гребанную селери.. Причем для джанги были плагины, так что часто это совсем не больно
источник

SZ

Sergey Z in rannts
раскрой тему черноты асинхронщины, она тут выглядела вполне уместно, просто я в неё не умею и учиться прямо сейчас мне лениво
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Ну вот uwsgi + uwsgi_tasks выглядит как именно то что нужно. Правда насчёт интеграции с джангой придётся немного озаботится. Т.к. не уверен что внутри воркера uwsgi будет инициализированая джанга с транзакциями и всем вот этим.
Самое простое что тут можно сделать - воспользоваться вот теми самыми managment командами. Таска, как обычная функция, будет просто импортировать какую-нить хрень из джанги (которая обрабатывает запуск manage.py) и вызывать её с параметрами, которые запустят нужную managment команду.
Да, это будут накладные расходы на полную инициализацию всей джанги на каждую таску, зато просто и надёжно. Для ускорения придётся разобраться как один раз проинициализировать джангу в воркере, и потом правильно запускать таску, что бы внутри была транзакция под эту таску.
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Sergey Z
раскрой тему черноты асинхронщины, она тут выглядела вполне уместно, просто я в неё не умею и учиться прямо сейчас мне лениво
Для того что ты хочешь, тебе придётся запускать "асихронную" джангу через ASGI-сервер. Это для того что бы у тебя были "воркеры" которые могут выполнять "асихронные" запросы и наверное корутины.
источник

SZ

Sergey Z in rannts
uwsgi у меня уже всё равно есть, поэтому я попробую сначала его.
если не выйдет, притащу селери, как решение, которое вроде бы умею готовить.
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Кроме celery есть модный-сковордный Dramatiq. Наверное он может оказаться легковеснее и под него может даже есть интеграция с джангой
источник

AF

Alexander Fedorin in rannts
Sergey Z
да, было предложено на прошлой неделе провести встречу на максимально самоизоляционную тему, кто как обустроил себе рабочее место, кому что удобно.

есть у кого предложения по времени?

я не уверен что к подобному формату надо как-то плотно и качественно готовиться, вероятно намного важнее почувствовать, что у всех проблемы плюс минус похожие, или погрустить, что у кого-то слишком идеально.
Давайте по времени определимся, я готов в любой день кроме завтра😀
источник

AZ

Alexander Zelenyak in rannts
Кстати, в четверг будет бирмитап. Удалённый.
источник

AZ

Alexander Zelenyak in rannts
Присоединяйтесь.
источник

AZ

Alexander Zelenyak in rannts
Переслано от Alexander Zelenyak
Кто тут хотел карантинный Бирмитап? Их есть у нас!
В этот четверг, в 19:00 он пройдёт в одном очень странном месте. А именно тут: https://spatial.chat
Так что проверяйте, что у вас всё работает, отлаживайте работу и вот это всё. Ссылку на комнату я пришю сюда перед началом мероприятия.
(у некоторых трезвых линуксоидов не заработало, так не не понадейтесь на авось, проверьте)
источник

AF

Alexander Fedorin in rannts
Норм)) если надо будет ещё, через Зум - обращайтесь, народ!
источник
2020 April 29

AG

Alexander Gorokhov in rannts
источник