pro100gram, разработчики тоже разные бывают, одни делают сайты, другие игры, третьи банковский софт... Что именно просело или выросло в этих условиях надо изучать отдельно. В том числе исследовать изменения вакансий на сайтах поиска работы, возможно, что по некоторым областям изменения можно будет увидеть прям сразу.
А ещё в тэгах есть фриланс. Вот с ним, полагаю, стало сложно, так как многие украинские фрилансеры работали на российских заказчиков. Да и рынок внутреннего фриланса наверняка уменьшился, а внешние рынки не каждому подойдут. Но и с фрилансом можно по сайтам бирж оценить обстановку.
pro100gram, изменилась прежде всего структура рынка. Например, услуги продвижения сайтов наверняка упали, потому как непосредственно для функционирования многих бизнесов они не особо нужны (в кратковременной перспективе уж точно). Поэтому начинать надо с того, что именно умеешь и уже тогда изучать, какие есть изменения в востребованности специалистов именно этого профиля. А не так вот, абстрактно-отвлечённо.
JSjun26, модель в django - это абстракция для прозрачного доступа к данным: создание, получение, фильтрация, изменение, удаление. Распаковку файлов надо выносить туда, где с ними идёт обработка, поскольку это элемент логики, а не абстракции данных. Например, пользователь загружает архив с фотографиями, сайт распаковывает их и создаёт для каждой фотки свой объект модели, который с помощью .save() сохраняется в базе.
JSjun26, вытащить распаковку zip из __str__ обязательно. Это как запускать ракеты при раскрывании объектива бинокля - совершенно нелогичное поведение. Тем более что всё осмысленное поведение этого метода - возврать self.name.
soremix, F3ANG, к слову, я считаю, что лучше не использовать id пользователя (from_user.id) как id чата (chat.id). Теоретически, они могут не совпадать не только для групповых чатов, и кто знает, не сделает ли Телеграм их когда-нибудь разными?
Индекс работает в реальном времени, чуть дороже становится вставка, так как кроме собственно вставки строки в таблицу, нужно будет ссылку на эту строку во все задействованные индексы. Чаще всего этим небольшим утяжелением вставки можно пренебречь. Если база на вставке до этого не съедала все ресурсы, то вряд ли она потратит свободный их запас на обновление индексов.
30к записей в день - это в среднем 1 запись в три секунды. Это вообще не нагрузка. Если вам там не надо вставлять эти 30 тыс. разовой операцией за 0.01 секунды, то вообще не должно быть никаких проблем. Но я бы обратил внимание, что это почти 1 млн в месяц, так что за год таблица вырастет в 12 раз, и к этому надо заранее готовиться (иметь достаточно места).
Hemul GM, на самом деле я б подумал насчёт mitm proxy и посмотрел, не передаётся ли он на самом деле в открытом виде :) Мало ли что там наколхозили эти капча-хакеры?
annonimus, может лучше спросить у разработчика, может он поможет восстановить на другую почту, как-то по другим сведениям верифицировав старого клиента? Если там проверка по онлайн-аккаунту то "восстановить пароль" скорее всего нельзя, так как он передаётся на сервер и там проверяется.
mayton2019, не интересовался как, но оно будет писать database is locked, если даже тривиальный select count(*) вызывать без синхронизации с другими участниками SQL-действа...
сергей кузьмин, я использовал с внешним lock-файлом, сделал многопроцессный клиент для разового прогона вызовов в некоторый API по огромному списку, нормально работало и не надо было переоткрывать базу после каждой операции.