Мазмунга өтүү

Өнүккөн долбоор: асинхрондуу API-кызмат

Сабактын башталышы

Жыйынтык долбоор: асинхрондуу API-кызмат

Көп булактан параллелдүү маалымат алабыз, аны иштетебиз жана тартуулайбыз - asyncio негизиндеги бирдиктүү кызмат.

Негизги идея: чыныгы кызмат убактысынын көбүн күтүү менен өткөрөт - тармактык жооптор, диск, башка кызматтар. asyncio бир агымга миңдеген ушундай күтүүлөрдү бир убакта кармап, даяр болгонуна которулууга мүмкүндүк берет. Бул жыйынтык долбоордо биз кичине, бирок продакшенге жакын баа агрегаторун курабыз: ал бир нече тышкы API'ден бааларды параллелдүү алат, аларды типтештирилген жазууларга келтирет, натыйжаларды жашоо убактысы (TTL) менен кэштейт жана HTTP суроо-талаптарга жооп берет - 1-15 темалардан типтештирүү, dataclasses, контекст менеджерлери, asyncio жана профилдөөнү кайра колдонуп.
Теманын аягында сиз төмөнкүлөрдү жасай аласыз:
  • кызматты бир окуя циклинин айланасында алуу -> иштетүү -> тартуулоо катмарларына бөлүү,
  • киргизүү-чыгарууну asyncio.gather жана asyncio.TaskGroup аркылуу параллелдүү аткаруу,
  • параллелдикти Semaphore менен чектөө жана ар бир чакырыкка таймаут кошуу,
  • тармактык ресурстарды асинхрондуу контекст менеджери аркылуу ээлөө,
  • CPU жүгүн run_in_executor 'га чыгарып, циклди жооп берүүчү кармоо,
  • убакыт кайда кетээрин далилдеш үчүн кызматты профилдөө.

1. Кызматтын формасы

Код жазуудан мурун чек араларды аныктаңыз. Биздин кызматта үч милдет бар, ар бири так келишими бар жука катмар:

  • Алуу - N тышкы API'ге HTTP аркылуу кайрылып, чийки JSON кайтарабыз. Бул таза киргизүү-чыгаруу жана async колдонуунун себеби.
  • Иштетүү - ар түрдүү чийки маалыматты бирдиктүү типтештирилген формага (Quote) айландырабыз. Негизинен CPU боюнча жеңил, кээде андай эмес.
  • Тартуулоо - кардардын суроолорун кабыл алабыз, алуу + иштетүүнү уюштурабыз, жоопту кэштейбиз жана жооп беребиз.

Бөлүү ар бир катмарды өзүнчө тестирлеп жана профилдөөгө мүмкүндүк берет, ал эми HTTP-клиентти алмаштыруу тартуулоо логикасына тийбейт. Төмөнкү диаграмма циклден өтүп жаткан бир суроону көрсөтөт, ал эми үч булакка чакырык бир убакта аткарылып жатат.

Бир окуя цикли (бир агым) Кардар суроо Тартуулоо катмары иштеткич + кэш TTL текшерүү булак A булак B булак C Иштетүү Quote жазууларына келтирүү үч чакырык убакытта кесилишет - цикл алардын баарын бир убакта күтөт
Алуу желпигичтей тарайт; иштетүү бириктирет; тартуулоо катмары кэштейт жана жооп берет.

Бул сабакты YourAIZone платформасында улантыңыз

Толук сабакта — толук түшүндүрмө, чыгарылган мисалдар, көп кездешкен каталар, заматта текшерилүүчү тесттер жана ЖИ-репетитор. Конок катары дароо баштаңыз же прогрессти сактоо үчүн аккаунт түзүңүз.

Толук сабакта

  • Толук түшүндүрмө
  • Чыгарылган мисалдар
  • Көп кездешкен каталар жана алардан кантип качуу керек
  • Тест суроолору: 15
  • Тема боюнча суроолорго жооп берген ЖИ-репетитор
  • Окуучу, ата-эне жана мугалим үчүн прогрессти көзөмөлдөө