БСсплатная ΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Ρ†ΠΈΡ

ΠžΠΏΠΈΡˆΠΈΡ‚Π΅ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΈΠ»ΠΈ Ρ†Π΅Π»ΡŒ. ΠžΡ‚Π²Π΅Ρ‡Ρƒ с практичСским ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом β€” бСсплатно, Π±Π΅Π· ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π².

Или Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ врСмя Π² Calendly

Leaf

Π‘Π½ΠΈΠΆΠ΅Π½ΠΈΠ΅ p95 latency Π² Django: N+1, кСши ΠΈ вынос Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ

Π‘Π½ΠΈΠΆΠ΅Π½ΠΈΠ΅ p95 latency Π² Django: N+1, кСши ΠΈ вынос Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ

Π‘Π½ΠΈΠΆΠ΅Π½ΠΈΠ΅ p95 latency Π² Django: N+1, кСши ΠΈ вынос Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ИсслСдованиС ΠΈ тСхничСский скоуп

ЧСм занимаюсь

РСшСния для "Π‘Π½ΠΈΠΆΠ΅Π½ΠΈΠ΅ p95 latency Π² Django: N+1, кСши ΠΈ вынос Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ"

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ:

  • УстранСниС N+1 запросов ΠΈ оптимизация Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…
  • Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ для ускорСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния
  • Π‘Π½ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ‡Π΅Ρ€Π΅Π· вынос тяТСлых Π·Π°Π΄Π°Ρ‡ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ
  • Настройка ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ для контроля ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ
БСсплатная ΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Ρ†ΠΈΡ

Когда Π½ΡƒΠΆΠ½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ со сниТСниСм p95 latency?

Высокая p95 latency (врСмя ΠΎΡ‚Π²Π΅Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 5% запросов) ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹ΠΌ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ страниц ΠΈΠ»ΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°ΠΌΠΈ, это ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π° ΠΈΡ… ΠΎΠΏΡ‹Ρ‚Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°Ρ… бизнСса. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ высокой p95 latency Π² Django-прилоТСниях часто связаны с нСэффСктивными запросами ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… (N+1), отсутствиСм ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ отсутствиСм асинхронной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тяТСлых Π·Π°Π΄Π°Ρ‡.

Мой тСхничСский ΠΏΠΎΠ΄Ρ…ΠΎΠ΄

Π― Π½Π°Ρ‡ΠΈΠ½Π°ΡŽ с Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния прилоТСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ ΡƒΠ·ΠΊΠΈΠ΅ мСста. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ я Ρ„ΠΎΠΊΡƒΡΠΈΡ€ΡƒΡŽΡΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… областях:

1. ВыявлСниС ΠΈ устранСниС N+1 запросов

N+1 запросы β€” ΠΎΠ΄Π½Π° ΠΈΠ· самых распространСнных ΠΏΡ€ΠΈΡ‡ΠΈΠ½ высокой latency. Они Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚, ΠΊΠΎΠ³Π΄Π° вмСсто ΠΎΠ΄Π½ΠΎΠ³ΠΎ запроса ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… выполняСтся мноТСство ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… запросов для извлСчСния связанных Π΄Π°Π½Π½Ρ‹Ρ…. НапримСр, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ORM Π² Django это ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:


for author in Author.objects.all():
    books = author.book_set.all()
    for book in books:
        print(book.title)

Π’ этом случаС для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΡ€Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ запрос ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… для получСния связанных ΠΊΠ½ΠΈΠ³. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ сотням ΠΈΠ»ΠΈ тысячам запросов ΠΏΡ€ΠΈ большом объСмС Π΄Π°Π½Π½Ρ‹Ρ….

Для выявлСния Ρ‚Π°ΠΊΠΈΡ… мСст я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΏΡ€ΠΎΡ„Π°ΠΉΠ»Π΅Ρ€Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Django Debug Toolbar ΠΈΠ»ΠΈ django-silk. Π­Ρ‚ΠΈ инструмСнты ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ запросы Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ HTTP-запроса. ПослС выявлСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Ρ… мСст я ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽ ΠΊΠΎΠ΄ с использованиСм select_related() ΠΈ prefetch_related(). НапримСр:


authors = Author.objects.prefetch_related('book_set').all()
for author in authors:
    for book in author.book_set.all():
        print(book.title)

Π­Ρ‚ΠΎ позволяСт Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ количСство запросов, объСдиняя ΠΈΡ… Π² ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… запросов.

ЧастыС ошибки ΠΏΡ€ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ N+1

  • ИспользованиС select_related() для ΠΏΠΎΠ»Π΅ΠΉ с ManyToMany связями, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ошибкам. Для Ρ‚Π°ΠΊΠΈΡ… случаСв Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ prefetch_related().
  • ΠŸΡ€Π΅Π½Π΅Π±Ρ€Π΅ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. ПослС внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ„Π°ΠΉΠ»Π΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΡˆΠ΅Π½Π°.
  • ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ запросов Π±Π΅Π· ΡƒΡ‡Π΅Ρ‚Π° индСксов Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π”Π°ΠΆΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ запрос ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ, Ссли ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ индСксы.

2. Настройка ΠΈ использованиС кСшСй

ΠšΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ β€” это ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт для сниТСния p95 latency, особСнно для Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ часто Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈ Ρ€Π΅Π΄ΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ. Π’ Django Π΅ΡΡ‚ΡŒ встроСнная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π±Π΅ΠΊΠ΅Π½Π΄ΠΎΠ² ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Memcached ΠΈ Redis. Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… уровнях:

ΠšΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ запросов

Для слоТных запросов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ часто, я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ запросов. НапримСр:


from django.core.cache import cache

def get_expensive_query_result():
    cache_key = "expensive_query_result"
    result = cache.get(cache_key)
    if result is None:
        result = MyModel.objects.filter(...).annotate(...).values(...)
        cache.set(cache_key, result, timeout=3600)
    return result

ΠšΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ шаблонов

Для страниц с тяТСлым Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ΠΎΠΌ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ€Π½ΠΎΠ΅ ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅:


{% load cache %}
{% cache 600 some_unique_key %}
    
{% endcache %}

Π­Ρ‚ΠΎ позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ выполнСния слоТных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страницы.

ЧастыС ошибки ΠΏΡ€ΠΈ использовании кСшСй

  • ΠŸΡ€ΠΎΠΏΡƒΡΠΊ очистки кСша ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. НапримСр, Ссли Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ, Π½ΠΎ кСш Π½Π΅ сбрасываСтся, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.
  • ΠšΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ часто ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° систСму ΠΈΠ·-Π·Π° частого обновлСния кСша.
  • ИспользованиС слишком ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ кСша (timeout), Ρ‡Ρ‚ΠΎ сниТаСт Π΅Π³ΠΎ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ.

3. Вынос тяТСлых Π·Π°Π΄Π°Ρ‡ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ

НСкоторыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° email, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ интСграция с внСшними API, ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡ Π² основном ΠΏΠΎΡ‚ΠΎΠΊΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запроса ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ p95 latency. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π·Π°Π΄Π°Ρ‡, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Celery, Π² сочСтании с Π±Ρ€ΠΎΠΊΠ΅Ρ€Π°ΠΌΠΈ сообщСний, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ RabbitMQ ΠΈΠ»ΠΈ Redis.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования Celery

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π°Π΄Π°Ρ‡ΠΈ:


from celery import shared_task

@shared_task
def send_email_task(email_address):
    # Π›ΠΎΠ³ΠΈΠΊΠ° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ email
    pass

Π­Ρ‚Ρƒ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΈΠ· прСдставлСния:


send_email_task.delay(user.email)

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° email Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ асинхронно, Π½Π΅ влияя Π½Π° врСмя ΠΎΡ‚Π²Π΅Ρ‚Π° основного запроса.

ЧастыС ошибки ΠΏΡ€ΠΈ использовании ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ

  • ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ. Если Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°ΡŽΡ‚ΡΡ, это ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ².
  • НСобработанныС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π·Π°Π΄Π°Ρ‡. Ошибки ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΌ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ°ΠΌ выполнСния Π·Π°Π΄Π°Ρ‡ΠΈ, Ρ‡Ρ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° систСму.
  • ИспользованиС ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ для Π·Π°Π΄Π°Ρ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ выполнСния. НапримСр, Π·Π°Π΄Π°Ρ‡ΠΈ, связанныС с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ интСрфСйсом, ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΎΠΏΡ‹Ρ‚, Ссли Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ асинхронно.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π‘Π½ΠΈΠΆΠ΅Π½ΠΈΠ΅ p95 latency β€” это слоТный, Π½ΠΎ Π²Π°ΠΆΠ½Ρ‹ΠΉ процСсс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ систСматичСского ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°. Если Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ высокой latency Π² вашСм Django-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, я Π³ΠΎΡ‚ΠΎΠ² ΠΏΠΎΠΌΠΎΡ‡ΡŒ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° ΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Ρ†ΠΈΡŽ.

Как ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°

Как ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°

ΠžΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π·Π²ΠΎΠ½ΠΊΠ° Π΄ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ поддСрТания высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π¨Π°Π³ 01

Π¨Π°Π³ 1: ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Π°Ρ ΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Ρ†ΠΈΡ

ΠžΠ±ΡΡƒΠΆΠ΄Π°ΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΈ ΡΠΎΠ±ΠΈΡ€Π°ΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ состоянии прилоТСния.

Π¨Π°Π³ 02

Π¨Π°Π³ 2: Аудит ΠΈ Π°Π½Π°Π»ΠΈΠ·

Π’Ρ‹ΠΏΠΎΠ»Π½ΡΡŽ Π°Π½Π°Π»ΠΈΠ· ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΎΡ„Π°ΠΉΠ»Π΅Ρ€Ρ‹ ΠΈ инструмСнты ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°.

Π¨Π°Π³ 03

Π¨Π°Π³ 3: ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ

Π’Π½Π΅Π΄Ρ€ΡΡŽ измСнСния Π² ΠΊΠΎΠ΄Π΅, Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽ ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π·Π°Π΄Π°Ρ‡ ΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ.

Π¨Π°Π³ 04

Π¨Π°Π³ 4: ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ°

ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ прилоТСния ΠΈ ΠΏΡ€ΠΎΠ²ΠΎΠΆΡƒ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ для вашСй ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

Dedicated Team Building ΠΈ аутсорсингDevOps, Cloud ΠΈ инфраструктурныС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠ˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ CRM ΠΈ ERP ΡΠΈΡΡ‚Π΅ΠΌΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ сайтов ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉΠ Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° E-commerce ΠΈ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠ Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° кастомных Π²Π΅Π±-прилоТСнийВСхничСский консалтинг ΠΈ стратСгия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ²Π’Ρ€Π΅Π½ΠΈΠ½Π³ΠΈ, наставничСство ΠΈ Π²ΠΎΡ€ΠΊΡˆΠΎΠΏΡ‹Dedicated Team Building ΠΈ аутсорсингDevOps, Cloud ΠΈ инфраструктурныС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠ˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ CRM ΠΈ ERP ΡΠΈΡΡ‚Π΅ΠΌΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ сайтов ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉΠ Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° E-commerce ΠΈ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠ Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° кастомных Π²Π΅Π±-прилоТСнийВСхничСский консалтинг ΠΈ стратСгия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ²Π’Ρ€Π΅Π½ΠΈΠ½Π³ΠΈ, наставничСство ΠΈ Π²ΠΎΡ€ΠΊΡˆΠΎΠΏΡ‹
ΠŸΠΎΡ‡Π΅ΠΌΡƒ PlantagoWeb

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ β€” ΠΏΠΎΡ‚ΠΎΠΌ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ

БСсплатная ΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Ρ†ΠΈΡ

Π‘Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ β€” Π΄ΠΎ любой ΠΎΠΏΠ»Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° ΠΈΠ· production

React, Vue, Node.js, Python, Kubernetes ΠΈ ΠΎΠ±Π»Π°ΠΊΠΎ Π² production

Π“ΠΈΠ±ΠΊΠΈΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚

МоТно Π½Π°Π½ΡΡ‚ΡŒ Π½Π° фикс, этап ΠΈΠ»ΠΈ Ρ€Π΅Π³ΡƒΠ»ΡΡ€Π½ΡƒΡŽ поставку β€” Π±Π΅Π· lock-in

ΠŸΡ€ΡΠΌΠ°Ρ коммуникация

ΠžΠ±Ρ‰Π°Π΅Ρ‚Π΅ΡΡŒ с Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ β€” Π±Π΅Π· мСнСдТСрского Ρ‚ΡƒΠΌΠ°Π½Π°

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ PlantagoWeb
Π˜Π½ΠΆΠ΅Π½Π΅Ρ€Π½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π°
FAQs
Вопросы

Π§Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡƒΡ‚ΠΎΡ‡Π½ΡΡŽΡ‚ Π΄ΠΎ старта ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Π― Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ с вСрсиями Django начиная с 2.2 ΠΈ Π²Ρ‹ΡˆΠ΅, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ послСднюю Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ.

Π­Ρ‚ΠΎ зависит ΠΎΡ‚ слоТности ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½ΠΎ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ Π°ΡƒΠ΄ΠΈΡ‚ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 2-3 дня, Π° Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΉ β€” ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠΉ Π΄ΠΎ Ρ‚Ρ€Ρ‘Ρ… нСдСль.

Доступ ΠΊ ΠΊΠΎΠ΄Ρƒ вашСго прилоТСния ΠΈ, Ссли Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊ staging ΠΈΠ»ΠΈ production-срСдС для Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Основной фокус β€” Django, Π½ΠΎ я Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³Ρƒ ΠΏΡ€ΠΎΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ вопросам ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ тСхнологиями, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Celery ΠΈΠ»ΠΈ Redis.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° ΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Ρ†ΠΈΡŽ ΠΏΠΎ ссылкС: <a href='#' class='get-appointment--js'>Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° ΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Ρ†ΠΈΡŽ</a>.