Size: a a a

Django [ru] #STAY HOME

2021 March 13

AD

Alex Dem in Django [ru] #STAY HOME
Vlad Naumov
Вы atomic имеете ввиду. Я если честно, плохо понял, как оно работает. Но вроде bulk_create использует именно его.

Что я ещё проверил:
1. Мой генератор, который выдаёт кол-во объектов, которое равно batch_size, жрет оперативу. С каждый циклом все больше
2. Гружу 200к позиций батчами по 5к. После перезагрузки сервера и БД отрабатывает ОК. Если второй раз запустить то оперативка сжирается и БД отключает соединение. Попробую оперативы на хостинг докинуть, может исправит ситуацию
да, атомик
атомик оборачивает блок кода в одну транзакцию
что делает bulk create  -я уже скинул

память может кончаться из-за мусора в памяти, у питона дерьмовый GC
источник

N

Nire in Django [ru] #STAY HOME
Vlad Naumov
БОльшая часть меняется. Мне нужно:
1. Обновить наличие и цену
2. Удалить позиции, которые закончились
3. Добавить позиции, которые появились
Хмм. А почему наличие решается так, а не подсчётом транзакций товаров?
источник

AD

Alex Dem in Django [ru] #STAY HOME
Vlad Naumov
Вы atomic имеете ввиду. Я если честно, плохо понял, как оно работает. Но вроде bulk_create использует именно его.

Что я ещё проверил:
1. Мой генератор, который выдаёт кол-во объектов, которое равно batch_size, жрет оперативу. С каждый циклом все больше
2. Гружу 200к позиций батчами по 5к. После перезагрузки сервера и БД отрабатывает ОК. Если второй раз запустить то оперативка сжирается и БД отключает соединение. Попробую оперативы на хостинг докинуть, может исправит ситуацию
" Мой генератор, который выдаёт кол-во объектов, которое равно batch_size, жрет оперативу. С каждый циклом все больше"
вот над этим стоит поработать
отработанные данные надо сбрасывать, конечно
источник

N

Nire in Django [ru] #STAY HOME
Хранить наличие элементов можно по поступивший товар - продавшийся. По крайней мере так работает база в больших компаниях
источник

VN

Vlad Naumov in Django [ru] #STAY HOME
Nire
Хмм. А почему наличие решается так, а не подсчётом транзакций товаров?
К сожалению, я получаю только csv со списком товара. На основании этих данных должны быть реализованы иные вычисления
источник

VN

Vlad Naumov in Django [ru] #STAY HOME
Alex Dem
" Мой генератор, который выдаёт кол-во объектов, которое равно batch_size, жрет оперативу. С каждый циклом все больше"
вот над этим стоит поработать
отработанные данные надо сбрасывать, конечно
Не подскажите, как это делать? Куда копать?
источник

AD

Alex Dem in Django [ru] #STAY HOME
Vlad Naumov
Вы atomic имеете ввиду. Я если честно, плохо понял, как оно работает. Но вроде bulk_create использует именно его.

Что я ещё проверил:
1. Мой генератор, который выдаёт кол-во объектов, которое равно batch_size, жрет оперативу. С каждый циклом все больше
2. Гружу 200к позиций батчами по 5к. После перезагрузки сервера и БД отрабатывает ОК. Если второй раз запустить то оперативка сжирается и БД отключает соединение. Попробую оперативы на хостинг докинуть, может исправит ситуацию
источник

VN

Vlad Naumov in Django [ru] #STAY HOME
О, спасибо. Попробую
источник

AD

Alex Dem in Django [ru] #STAY HOME
Vlad Naumov
О, спасибо. Попробую
но сначала надо убедиться, что проблема в GC
отработанные данные сбрасываешь так или иначе, или они висят где-то в объектах?
источник

Р

Руслан in Django [ru] #STAY HOME
Народ, есть апиха на DRF с фронтом React'a. Нужно добавить туда чат. Есть ли какая-нибудь асинхронная библиотека в связке с Джангой, к которой можно прилепить React фронт?
источник

AD

Alex Dem in Django [ru] #STAY HOME
Руслан
Народ, есть апиха на DRF с фронтом React'a. Нужно добавить туда чат. Есть ли какая-нибудь асинхронная библиотека в связке с Джангой, к которой можно прилепить React фронт?
нормальный чат будет не на DRF, я подозреваю
источник

Р

Руслан in Django [ru] #STAY HOME
Конечно не на DRF
источник

AD

Alex Dem in Django [ru] #STAY HOME
websockets на djangochannels
источник

Р

Руслан in Django [ru] #STAY HOME
Спасибо
источник

VN

Vlad Naumov in Django [ru] #STAY HOME
Alex Dem
но сначала надо убедиться, что проблема в GC
отработанные данные сбрасываешь так или иначе, или они висят где-то в объектах?
Нет, сам ничего не сбрасываю. Весь основной код, отвечающий у меня за процесс заполнения сбрасывал выше.

Читаю csv на 1м строк, создаю датафрейм - все с помощью pandas. И потом генератором отдаю части в bulk_create.
Попробую в цикл засунуть сборку мусора
источник

AD

Alex Dem in Django [ru] #STAY HOME
@NaumovVlad я короче спать
Удачи тебе)

если с памятью борешься, рекомендую убедиться что ты удаляешь ненужные данные, а потом уже бороться с GC
по вопросу скорости работы БД попробуй transaction.atomic чтобы уменьшить количество транзакций и операций коммита
источник

VN

Vlad Naumov in Django [ru] #STAY HOME
Alex Dem
@NaumovVlad я короче спать
Удачи тебе)

если с памятью борешься, рекомендую убедиться что ты удаляешь ненужные данные, а потом уже бороться с GC
по вопросу скорости работы БД попробуй transaction.atomic чтобы уменьшить количество транзакций и операций коммита
Да, буду попытаться) спасибо!
источник

AD

Alex Dem in Django [ru] #STAY HOME
Vlad Naumov
Нет, сам ничего не сбрасываю. Весь основной код, отвечающий у меня за процесс заполнения сбрасывал выше.

Читаю csv на 1м строк, создаю датафрейм - все с помощью pandas. И потом генератором отдаю части в bulk_create.
Попробую в цикл засунуть сборку мусора
"Нет, сам ничего не сбрасываю. "
вот я бы озадачился удалением ненужных объектов
Вполне возможно, что виноват не GC, а код, который держит в памяти лишние объекты
источник

AD

Alex Dem in Django [ru] #STAY HOME
Можно поискать что-нибудь типа https://pypi.org/project/memory-profiler/, любой сносный memory profiler
источник

AD

Alex Dem in Django [ru] #STAY HOME
и проанализировать где затаился булщит
источник