Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Každý vývojář chce, aby program běžel rychleji. V tomto článku vám ukážeme, jak můžete přidat jednoslovnou linku, abyste mohli aplikaci MSAL Python používat k získání tokenu přibližně 1,5x až 2x rychleji.
Příprava
Nejprve si vybereme existující ukázkový skript, který tento experiment předvede. Zvolíme ukázku hesla uživatelského jména, protože nevyžaduje žádnou interakci uživatele, aby měření času nebylo ovlivněno pomalým zásahem člověka.
Nakonfigurujte config.json pro ukázku podle pokynů.
Pokud chcete tento volitelný fragment kódu časovat, měli byste ho přidat na začátek ukázky:
import time; t = time.time()a pak na konec ukázky přidáte tento řádek:
print("It took", time.time() - t, "second(s)")V ideálním případě byste chtěli zakomentovat tyto řádky skutečného volání Microsoft Graph API, protože není součástí získání tokenu. Nakonec můžete také volitelně odkomentovat tyto dva řádky, abyste povolili protokolování a viděli, co se děje na pozadí.
před
Teď ho několikrát spusťte. Zobrazí se výstup podobný tomuto:
$ python username_password_sample.py config.json
It took 0.9160797595977783 second(s)
$ python username_password_sample.py config.json
It took 0.7800290584564209 second(s)
$ python username_password_sample.py config.json
It took 0.8385567665100098 second(s)
Získání tokenu trvalo přibližně 0,8 sekund.
Skutečná magie
Teď si trochu pobavíme.
Nainstalujte modul třetí strany "requests-cache" spuštěním tohoto příkazu jednou: pip install requests-cachea pak na začátek ukázky přidejte tento řádek:
import requests_cache; requests_cache.install_cache()
Po
Teď ho několikrát spusťte. Zobrazí se výstup podobný tomuto:
$ python username_password_sample.py config.json
It took 0.41900205612182617 second(s)
$ python username_password_sample.py config.json
It took 0.480008602142334 second(s)
$ python username_password_sample.py config.json
It took 0.44204020500183105 second(s)
Získání tokenu trvalo přibližně 0,4 sekundy.
Co se děje?
Před získáním tokenu by služba MSAL potřebovala získat několik koncových bodů zjišťování, aby se našla nějaká metadata. Tato metadata se často mění, takže je můžete ukládat do mezipaměti a opakovaně používat. Toto jsou standardní postupy, ke kterým dochází ve vrstvě HTTP, proto MSAL Python nemusí takové chování implementovat samostatně a obecná knihovna mezipaměti HTTP by pro nás tuto úlohu prováděla.
V našem případě MSAL Python už používá oblíbenou knihovnu HTTP s názvem requests, a pak je tu ještě další generická knihovna requests-cache, navržená pro monkey-patchování requests a pro automatické zajištění chování HTTP cache.
Ještě lepší je, že ji ve výchozím nastavení ukládá na disk, takže náš ukázkový program pro příkazový řádek stále využívá výhod takové HTTP mezipaměti, přestože se pokaždé spouští jako nový proces.
Ve skutečnosti tento trik nepomáhá jen MSAL Pythonu, ale zlepšuje i veškerý další HTTP provoz vaší aplikace, který lze ukládat do mezipaměti.
Conclusion
Teď ho máte, takže výkon 1,5x až 2x získáte pouze jedním řádkem kódu. A to je všeobecně použitelné pro všechny vaše aplikace využívající HTTP.
Ať se vám dobře hackuje!