<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" >

  <channel>
    <title><![CDATA[Комментарии / Профиль ipakeev]]></title>
    <link>https://habr.com/ru/users/ipakeev/comments/</link>
    <description><![CDATA[Хабр: комментарии пользователя ipakeev]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Tue, 05 May 2026 18:58:21 GMT</pubDate>
    
    
      <image>
        <link>https://habr.com/ru/</link>
        <url>https://habrastorage.org/webt/ym/el/wk/ymelwk3zy1gawz4nkejl_-ammtc.png</url>
        <title>Хабр</title>
      </image>
    

    
      

      
        
  
    <item>
      <title>09.02.2026 04:40:52 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/994224/#comment_29501118</guid>
      <link>https://habr.com/ru/articles/994224/#comment_29501118</link>
      <description><![CDATA[<p>Было бы интересно посмотреть на качество сна жены. И насколько с первым было тяжелее, чем со вторым ребенком)</p>]]></description>
      <pubDate>Mon, 09 Feb 2026 04:40:52 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>27.03.2025 08:07:29 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/kts/articles/816757/#comment_28096366</guid>
      <link>https://habr.com/ru/companies/kts/articles/816757/#comment_28096366</link>
      <description><![CDATA[<p>Мне очень нравится, использую в своих проектах и всем советую)</p><p>Приятно видеть активное развитие FastStream.</p>]]></description>
      <pubDate>Thu, 27 Mar 2025 08:07:29 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>07.11.2024 20:23:11 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/676144/#comment_27527782</guid>
      <link>https://habr.com/ru/articles/676144/#comment_27527782</link>
      <description><![CDATA[<p>Превосходный цикл статей. Огромное спасибо за проделанную работу!</p>]]></description>
      <pubDate>Thu, 07 Nov 2024 20:23:11 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>17.10.2024 21:44:03 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/850928/#comment_27430854</guid>
      <link>https://habr.com/ru/articles/850928/#comment_27430854</link>
      <description><![CDATA[<p>Для меня минусом было постоянное чувство хрупкости и неполноценности ORM. </p><p>Ещё нужно упомянуть aerich: местами сыроват. Год назад испытал много головной боли в тестах или когда требовался откат миграции. Возвращаться нет желания.</p>]]></description>
      <pubDate>Thu, 17 Oct 2024 21:44:03 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>06.10.2024 20:41:20 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/848596/#comment_27385372</guid>
      <link>https://habr.com/ru/articles/848596/#comment_27385372</link>
      <description><![CDATA[<blockquote><p>Транзакции в слое логики (избегайте, если можете)</p><p>...</p><p>По мере роста логики вы должны тщательно обдумывать, что должно выполняться внутри транзакции, а что — вне её. Откат повлияет на всё, что вы поместите внутрь функции.</p></blockquote><p>Если в рамках одного запроса от пользователя мне требуется проводить какие-то изменения внутри транзакции, а другие - строго вне, то это повод задуматься о переосмыслении api. Но даже если требуется делать именно так, то ведь на то это и слой логики, что я волен определять, какие действия должны быть атомарными, а какие - нет :)</p><blockquote><p>Не говоря уже о странном аргументе tx, который нужно передавать в методы репозитория.</p></blockquote><p>Что думаете насчёт того, чтобы не заморачиваться и просто создавать (где нужно) отдельную функцию, которая принимает на вход tx? В UpdateByID по сути так и происходит, просто вложено в другую функцию.</p><blockquote><p>Паттерн UpdateFn (наше основное решение)</p></blockquote><p>Принцип "на, держи юзера, измени в нём, что нужно, а я пока покурю" интересен. Но, кажется, что не совсем удобный в более сложных случаях. У вас был опыт применения, когда требуются изменения сразу в нескольких таблицах? Как будто в этом случае часть бизнес логики будет проникать в репозиторий...</p>]]></description>
      <pubDate>Sun, 06 Oct 2024 20:41:20 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>22.09.2024 20:48:09 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/timeweb/articles/840200/#comment_27327510</guid>
      <link>https://habr.com/ru/companies/timeweb/articles/840200/#comment_27327510</link>
      <description><![CDATA[<p>За что так с celery?..</p>]]></description>
      <pubDate>Sun, 22 Sep 2024 20:48:09 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>30.05.2024 10:19:23 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/kts/articles/816757/#comment_26880589</guid>
      <link>https://habr.com/ru/companies/kts/articles/816757/#comment_26880589</link>
      <description><![CDATA[<p>В моем примере происходит почти то же самое, просто логика вызова асинхронной функции из синхронной спрятана в декораторе.</p><p><code>asyncio.run</code>  создает  новый цикл событий, выполняет корутину и закрывает цикл событий. Если для таски нужен предварительный сетап (например подключение к базе данных), то это также нужно сделать внутри таски. Поэтому оптимальнее сделать сетап один раз, создать/сохранить event loop и уже в нем запускать таски.</p>]]></description>
      <pubDate>Thu, 30 May 2024 10:19:23 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>27.05.2024 21:08:07 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/kts/articles/816757/#comment_26870047</guid>
      <link>https://habr.com/ru/companies/kts/articles/816757/#comment_26870047</link>
      <description><![CDATA[<p>Спасибо за совет!</p><p>P.S. Приятно видеть в комментариях отца FastStream :)</p>]]></description>
      <pubDate>Mon, 27 May 2024 21:08:07 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>27.05.2024 11:14:30 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/kts/articles/816757/#comment_26868079</guid>
      <link>https://habr.com/ru/companies/kts/articles/816757/#comment_26868079</link>
      <description><![CDATA[<p>Пробовал на python 3.10 и 3.11, в разных комбинациях, в том числе с разным значением max_concurrent_ops. </p><p>Для варианта <code>JSONResponse({}, background=BackgroundTask(...))</code> результат один и тот же. Как только убираю семафор, зависания исчезают, показатели становятся примерно как у arq, <u>но всё равно ниже</u> на 2-5%.</p><p></p><p>Теперь про прямой вызов queue.enqueue.</p><p>На первый взгляд как будто бы всё нормализуется. Но стоит учесть, что в этом случае искусственно занижается нагрузка от locust (т.к. сначала задача ставится в очередь, и только затем отдается ответ на запрос; через <code>BackgroundTask</code> происходит ровно наоборот). </p><p>Если увеличить количество пользователей до 5000, то у saq всё равно сохраняется тенденция к деградации сервиса. При этом у arq всё отлично: RPS выше почти на 30%.</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/bff/cec/4ce/bffcec4ce76580a326c905b9a635f2ab.png" alt="SAQ" title="SAQ" width="1280" height="533"><div><figcaption>SAQ</figcaption></div></figure><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/299/b8f/788/299b8f7882f5de0a7c14383e2d55ee3e.png" alt="ARQ" title="ARQ" width="1891" height="784"><div><figcaption>ARQ</figcaption></div></figure><p></p>]]></description>
      <pubDate>Mon, 27 May 2024 11:14:30 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>27.05.2024 10:46:15 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/kts/articles/816757/#comment_26867913</guid>
      <link>https://habr.com/ru/companies/kts/articles/816757/#comment_26867913</link>
      <description><![CDATA[<p>В background task задачи выполняются <u>не</u> последовательно: они стартуют сразу после ответа на запрос. Если задача синхронная, то выполняется в threadpool (anyio.to_thread.run_sync).</p><p>По исходному коду не нашел причины, почему следующие задачи бы не выполнялись.</p>]]></description>
      <pubDate>Mon, 27 May 2024 10:46:15 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>26.05.2024 16:10:09 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/kts/articles/816757/#comment_26865463</guid>
      <link>https://habr.com/ru/companies/kts/articles/816757/#comment_26865463</link>
      <description><![CDATA[<p>Бенчмарки действительно показывают, что saq работает значительно быстрее, чем arq. Локально цифры тоже подтверждаются.<br>Но чтобы это как-то отразилось в реальной практике, похоже, нужны бешеные нагрузки. <br><br>Почему при нагрузочном тестировании saq так странно себя ведет - загадка. Судя по логам, сервер периодически намертво зависает на 5-20 секунд в момент постановки задачи в очередь (в это время FastAPI не может обработать ни один запрос).</p>]]></description>
      <pubDate>Sun, 26 May 2024 16:10:09 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>25.05.2024 10:31:47 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/kts/articles/816757/#comment_26862053</guid>
      <link>https://habr.com/ru/companies/kts/articles/816757/#comment_26862053</link>
      <description><![CDATA[<p>Да, изначально одним из минусов было то, что последний релиз arq был в конце 2022 года, но внезапно 1 мая этого года выкатили новую версию. Поэтому пришлось убрать)</p>]]></description>
      <pubDate>Sat, 25 May 2024 10:31:47 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>25.05.2024 10:27:25 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/kts/articles/816757/#comment_26862037</guid>
      <link>https://habr.com/ru/companies/kts/articles/816757/#comment_26862037</link>
      <description><![CDATA[<p>Если у вас CRUD'овый интернет магазин, то избыточно. Но как только появляются оплаты, интеграции, квитанции, задачи по расписанию, то без фоновых задач никак. </p><p>Даже если эти задачи находятся в отдельных микросервисах (как у крупных проектов), тот же faststream значительно упростит реализацию.</p>]]></description>
      <pubDate>Sat, 25 May 2024 10:27:25 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>25.05.2024 09:14:32 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/kts/articles/816757/#comment_26861849</guid>
      <link>https://habr.com/ru/companies/kts/articles/816757/#comment_26861849</link>
      <description><![CDATA[<p>При тестировании замечал, что иногда один из воркеров работает заметно медленнее остальных. Тем не менее, это не мешает ему обработать все 10к задач, даже если остальные воркеры завершили работу десятки секунд назад.</p><p>Как указал выше, faststream создан именно для общения между микросервисами. Это подразумевает, что все, кто подписан на топик, должны получить сообщение.</p><p>С другой стороны, для разных брокеров есть куча <u>специфичных</u> параметров, которые позволяют гранулированно настроить поведение публикации/обработки сообщений, в том числе отработку только один раз. Но этот момент не совсем очевидный и требует проверки, например встречал похожий issue для NATS.</p>]]></description>
      <pubDate>Sat, 25 May 2024 09:14:32 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>24.05.2024 18:12:48 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/kts/articles/816757/#comment_26860203</guid>
      <link>https://habr.com/ru/companies/kts/articles/816757/#comment_26860203</link>
      <description><![CDATA[<figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/e82/1f1/52e/e821f152e6aa8a065ca3a8d2d82ab65a.jpg" width="945" height="786"></figure><p>Если у каждой библиотеки запустить по 5 воркеров, то результат будет таким: arq, saq и celery выполнят все 10к задач, а faststream - в 5 раз больше (потому что одна и та же задача будет выполняться на <u>каждом</u> воркере).</p><p>Думаю, у faststream такое поведение из-за того, что в первую очередь он создан для общения между микросервисами, а не для фоновых задач.</p>]]></description>
      <pubDate>Fri, 24 May 2024 18:12:48 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>24.05.2024 11:42:31 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/kts/articles/816757/#comment_26858633</guid>
      <link>https://habr.com/ru/companies/kts/articles/816757/#comment_26858633</link>
      <description><![CDATA[<p>Это про какую библиотеку?</p>]]></description>
      <pubDate>Fri, 24 May 2024 11:42:31 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>04.08.2022 20:20:54 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/kts/articles/680572/#comment_24598138</guid>
      <link>https://habr.com/ru/companies/kts/articles/680572/#comment_24598138</link>
      <description><![CDATA[<p>Я тоже сначала восхищался алхимией, пока не стал работать с Django ORM. Мем в блоке P.S. тому подтверждение)</p>]]></description>
      <pubDate>Thu, 04 Aug 2022 20:20:54 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>04.08.2022 11:37:34 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/kts/articles/680572/#comment_24596928</guid>
      <link>https://habr.com/ru/companies/kts/articles/680572/#comment_24596928</link>
      <description><![CDATA[<p>Благодарю за замечания и развернутый ответ.</p><blockquote><p>В списке оптимизаци - куда делся defer?</p></blockquote><p>Не использовал defer, так как, на мой взгляд, намного проще запрашиваемые поля сразу прокидывать в only, нежели высчитывать разницу запрашиваемых и имеющихся наборов полей, а затем решать, применять only или defer.</p><blockquote><p>В DRF можно создать сериализаторы а-ля GRAPHQL</p></blockquote><p>В DRF пока не силен, буду копать.</p><blockquote><p>Не поверишь. Разрабы класса Model в Django давным давно так же подумали.</p></blockquote><p>Информация о полях модели нам нужна в определенном формате, поэтому и применяем кэширование, чтобы каждый раз не итерироваться по атрибутам _meta.<br> Кстати, m2m поле указывается в Model._meta.many_to_many, а в Model._meta.fields не указывается (или не всегда), хотя там у каждого поля есть булевый признак many_to_many.</p><blockquote><p>Генерация <a href="http://field.name" rel="noopener noreferrer nofollow">field.name</a> через имя related model не сработает, если в поле переопределено related_name или в модели переопределено default_related_name.</p></blockquote><p>У нас практически в каждой модели указан related_name, и всё работает. Попробовал переопределить default_related_name - снова всё работает. Единственный момент, когда не происходит оптимизация, это переопределение related_query_name, но этот способ для тех, кто точно хочет всё сломать.</p><blockquote><p>Оптимизация не сработает, если в коде не оспользовать обращение к concrete_model вместо прокси.</p></blockquote><p>Не понял, почему оптимизация не должна срабатывать. В проекте наблюдаем одинаково оптимальное количество запросов при обращении что к прокси, что к concrete_model.</p><blockquote><p>Второй баг, это не баг. defer/only не делает join нужных таблиц.</p></blockquote><p>Про join и речи не было. "огромное количество запросов" - это симптом, с которым нужно было разобраться. При реверсивном внешнем ключе возникает такая проблема, а, так сказать, при прямом внешнем ключе, всё работает так, как и ожидается (то есть автоматически достается pk).</p>]]></description>
      <pubDate>Thu, 04 Aug 2022 11:37:34 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>03.08.2022 14:47:23 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/kts/articles/680572/#comment_24594614</guid>
      <link>https://habr.com/ru/companies/kts/articles/680572/#comment_24594614</link>
      <description><![CDATA[<p>Благодарю, познавательно.</p>]]></description>
      <pubDate>Wed, 03 Aug 2022 14:47:23 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

      

      

    
  </channel>
</rss>
