Files
fastapi/docs/ja/docs/async.md
Nils Lindemann ebc8ac7295 📝 Tweak docs and translations links, typos, format (#11389)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
2024-04-18 14:53:19 -05:00

28 KiB
Raw Blame History

䞊行凊理ず async / await

path operation 関数のための async def に関する詳现ず非同期 (asynchronous) コヌド、䞊行凊理 (Concurrency)、そしお、䞊列凊理 (Parallelism) の背景に぀いお。

急いでいたすか

TL;DR:

次のような、await を䜿甚しお呌び出すべきサヌドパヌティラむブラリを䜿甚しおいる堎合:

results = await some_library()

以䞋の様に async def を䜿甚しおpath operation 関数を宣蚀したす。

@app.get('/')
async def read_results():
    results = await some_library()
    return results

!!! note "備考" async def を䜿甚しお䜜成された関数の内郚でしか await は䜿甚できたせん。


デヌタベヌス、API、ファむルシステムなどず通信し、await の䜿甚をサポヌトしおいないサヌドパヌティラむブラリ (珟圚のほずんどのデヌタベヌスラむブラリに圓おはたりたす) を䜿甚しおいる堎合、次の様に、単に def を䜿甚しお通垞通り path operation 関数 を宣蚀しおください:

@app.get('/')
def results():
    results = some_library()
    return results

アプリケヌションが (どういうわけか) 他の䜕ずも通信せず、応答を埅぀必芁がない堎合は、async def を䜿甚しお䞋さい。


よく分からない堎合は、通垞の def を䜿甚しお䞋さい。


備考: path operation 関数に必芁なだけ def ず async def を混圚させ、それぞれに最適なオプションを䜿甚しお定矩できたす。それに応じおFastAPIは正しい凊理を行いたす。

ずにかく、䞊蚘のいずれの堎合でもFastAPIは非同期で動䜜し、非垞に高速です。

しかし、䞊蚘のステップに埓うこずで、パフォヌマンスの最適化を行えたす。

技術詳现

珟代版のPythonは「非同期コヌド」を、「コルヌチン」ず称されるものを利甚しおサポヌトしおいたす。これは async ず await 構文を甚いたす。

次のセクションで、フレヌズ内のパヌツを順に芋おいきたしょう:

  • 非同期コヌド
  • async ず await
  • コルヌチン

非同期コヌド

非同期コヌドずは、蚀語💬がコヌド内のどこかで、コンピュヌタ/プログラム🀖に 他の䜕か がどこか別の箇所で終了するのを埅぀ように䌝える手段を持っおいるこずを意味したす。他の䜕か は「遅いファむル📝」ず呌ばれおいるずしたしょう.

したがっお、コンピュヌタは「遅いファむル📝」が終了するたで、他の凊理ができたす。

コンピュヌタ/プログラム🀖は再び埅機する機䌚があるずきや、その時点で行っおいたすべおの䜜業が完了するたびに戻っおきたす。そしお、必芁な凊理をしながら、コンピュヌタ/プログラム🀖が埅っおいた凊理のどれかが終わっおいるかどうか確認したす。

次に、それ🀖が最初のタスク (芁するに、先皋の「遅いファむル📝」)を終わらせお、そのタスクの結果を䜿う必芁がある凊理を続けたす。

この「他の䜕かを埅぀」ずは、通垞以䞋の様なものを埅぀ような (プロセッサずRAMメモリの速床に比べお) 盞察的に「遅い」I/O 操䜜を指したす:

  • ネットワヌク経由でクラむアントから送信されるデヌタ
  • ネットワヌク経由でクラむアントが受信する、プログラムから送信されたデヌタ
  • システムによっお読み取られ、プログラムに枡されるディスク内のファむル内容
  • プログラムがシステムに枡しお、ディスクに曞き蟌む内容
  • リモヌトAPI操䜜
  • デヌタベヌス操䜜の完了
  • デヌタベヌスク゚リが結果を返すこず
  • など。

実行時間のほずんどがI/O 操䜜の埅ち時間が占めるため、このような操䜜を「I/O バりンド」操䜜ず蚀いたす。

コンピュヌタ/プログラムがこのような遅いタスクず「同期 (タスクの結果を取埗しお䜜業を続行するために、䜕もせずに、タスクが完了する瞬間を正確に埅぀)」する必芁がないため、「非同期」ず呌ばれたす。

その代わりに、「非同期」システムであるこずにより、いったん終了するず、タスクは、コンピュヌタ/プログラムが既に開始した凊理がすべお完了するのをほんの少し (数マむクロ秒) 埅っお、結果を受け取りに戻っおきたす。そしお、凊理を継続したす。

「同期」の堎合 (「非同期」ずは異なり)、「シヌケンシャル」ずいう甚語もよく䜿甚されたす。これは、コンピュヌタ/プログラムがすべおのステップを (埅機が䌎う堎合でも別のタスクに切り替えるこずなく) 順番に実行するためです。

䞊行凊理ずハンバヌガヌ

䞊蚘の非同期コヌドのアむデアは、**「䞊行凊理」**ず呌ばれるこずもありたす。 **「䞊列凊理」**ずは異なりたす。

䞊行凊理ず䞊列凊理はどちらも「倚かれ少なかれ同時に発生するさたざたなこず」に関連しおいたす。

ただし、䞊行凊理ず䞊列凊理の詳现はたったく異なりたす。

違いを確認するには、ハンバヌガヌに関する次の物語を想像しおみおください:

䞊行ハンバヌガヌ

ファストフヌド🍔を食べようず、奜きな人😍ずレゞに䞊んでおり、レゞ係💁があなたの前にいる人達の泚文を受け぀けおいたす。

それからあなたの番になり、奜きな人😍ず自分のために、2぀の非垞に豪華なハンバヌガヌ🍔を泚文したす。

料金を支払いたす💞。

レゞ係💁はキッチンの男👚‍🍳に向かっお、あなたのハンバヌガヌ🍔を準備しなければならないず䌝えるために䜕か蚀いたした (圌は珟圚、前のお客さんの商品を準備しおいたすが)。

レゞ係💁はあなたに番号札を枡したす。

埅っおいる間、奜きな人😍ず䞀緒にテヌブルを遞んで座り、奜きな人😍ず長い間話をしたす (泚文したハンバヌガヌは非垞に豪華で、準備に少し時間がかかるので✚🍔✚)。

ハンバヌガヌ🍔を埅ちながら奜きな人😍ずテヌブルに座っおいる間、あなたの奜きな人がなんお玠晎らしく、かわいくお頭がいいんだず✚😍✚惚れ惚れしながら時間を費やすこずができたす。

奜きな人😍ず話しながら埅っおいる間、ずきどき、カりンタヌに衚瀺されおいる番号をチェックしお、自分の番かどうかを確認したす。

その埌、぀いにあなたの番になりたした。カりンタヌに行き、ハンバヌガヌ🍔を手に入れおテヌブルに戻りたす。

あなたずあなたの奜きな人😍はハンバヌガヌ🍔を食べお、楜しい時間を過ごしたす✚。


䞊蚘のストヌリヌで、あなたがコンピュヌタ/プログラム🀖だず想像しおみおください。

列にいる間、あなたはアむドル状態です😎。䜕も「生産的」なこずをせず、ただ自分の番を埅っおいたす。しかし、レゞ係💁は泚文を受け取るだけなので (商品の準備をしおいるわけではない)、列は高速です。したがっお、䜕も問題ありたせん。

それから、あなたの番になったら、実に「生産的な」䜜業を行いたす🀓、メニュヌを確認し、欲しいものを決め、奜きな人😍の欲しいものを聞き、料金を支払い💞、珟金たたはカヌドを正しく枡したか確認し、正しく枅算されたこずを確認し、泚文が正しく通っおいるかなどを確認したす。

しかし、ハンバヌガヌ🍔をただできおいないので、ハンバヌガヌの準備ができるたで埅機🕙する必芁があるため、レゞ係💁ずの䜜業は「䞀時停止⏞」になりたす。

しかし、カりンタヌから離れお、番号札を持っおテヌブルに座っおいるずきは、泚意を奜きな人😍に切り替えお🔀、その䞊で「仕事⏯🀓」を行なえたす。その埌、奜きな人😍ずいちゃ぀くかのような、非垞に「生産的な🀓」こずを再び行いたす。

次に、レゞ係💁は、「ハンバヌガヌの準備ができたした🍔」ず蚀っお、カりンタヌのディスプレむに番号を衚瀺したすが、衚瀺番号があなたの番号に倉わっおも、すぐに狂ったように飛んで行くようなこずはありたせん。あなたは自分の番号札を持っおいっお、他の人も自分の番号札があるので、あなたのハンバヌガヌ🍔を盗む人がいないこずは知っおいたす。

なので、あなたは奜きな人😍が話し終えるのを埅っお (珟圚の仕事⏯ / 凊理䞭のタスクを終了したす🀓)、優しく埮笑んで、ハンバヌガヌを貰っおくるねず蚀いたす⏞。

次に、カりンタヌぞ、いたから完了する最初のタスク⏯ぞ向かい、ハンバヌガヌ🍔を受け取り、感謝の意を衚しお、テヌブルに持っおいきたす。これで、カりンタヌずのやり取りのステップ/タスクが完了したした⏹。これにより、「ハンバヌガヌを食べる🔀⏯」ずいう新しいタスクが䜜成されたす。しかし、前の「ハンバヌガヌを取埗する」ずいうタスクは終了したした⏹。

䞊列ハンバヌガヌ

これらが「䞊行ハンバヌガヌ」ではなく、「䞊列ハンバヌガヌ」であるずしたしょう。

あなたは奜きな人😍ず䞊列ファストフヌド🍔を買おうずしおいたす。

列に䞊んでいたすが、䜕人かの料理人兌、レゞ係 (8人ずしたしょう) 👚‍🍳👚‍🍳👚‍🍳👚‍🍳👚‍🍳👚‍🍳👚‍🍳👚‍🍳があなたの前にいる人達の泚文を受け぀けおいたす。

8人のレゞ係がそれぞれ自分で泚文を受けるや吊や、次の泚文を受ける前にハンバヌガヌを準備するので、あなたの前の人達はカりンタヌを離れずに、ハンバヌガヌ🍔ができるのを埅っおいたす🕙。

それからいよいよあなたの番になり、奜きな人😍ず自分のために、2぀の非垞に豪華なハンバヌガヌ🍔を泚文したす。

料金を支払いたす💞。

レゞ係はキッチンに行きたす👚‍🍳。

あなたはカりンタヌの前に立っお埅ちたす🕙。番号札がないので誰もあなたよりも先にハンバヌガヌ🍔を取らないようにしたす。

あなたず奜きな人😍は忙しいので、誰もあなたの前に来させたせんし、あなたのハンバヌガヌが到着したずき🕙に誰にも取るこずを蚱したせん。あなたは奜きな人に泚意を払えたせん😞。

これは「同期」䜜業であり、レゞ係/料理人👚‍🍳ず「同期」したす。レゞ係/料理人👚‍🍳がハンバヌガヌ🍔を完成させおあなたに枡すたで埅぀🕙必芁があり、ちょうどその完成の瞬間にそこにいる必芁がありたす。そうでなければ、他の誰かに取られるかもしれたせん。

その埌、カりンタヌの前で長い時間埅っおから🕙、぀いにレゞ係/料理人👚‍🍳がハンバヌガヌ🍔を枡しに戻っおきたす。

ハンバヌガヌ🍔を取り、奜きな人😍ずテヌブルに行きたす。

ただ食べるだけ、それでおしたいです。🍔⏹。

ほずんどの時間、カりンタヌの前で埅぀のに費やされおいたので🕙、あたり話したりいちゃ぀くこずはありたせんでした😞。


この䞊列ハンバヌガヌのシナリオでは、あなたは2぀のプロセッサを備えたコンピュヌタ/プログラム🀖 (あなたずあなたの奜きな人😍) であり、䞡方ずも埅機🕙しおいお、圌らは「カりンタヌで埅機🕙」するこずに専念しおいたす⏯。

ファストフヌド店には8぀のプロセッサ (レゞ係/料理人) 👚‍🍳👚‍🍳👚‍🍳👚‍🍳👚‍🍳👚‍🍳👚‍🍳👚‍🍳がありたす。䞀方、䞊行ハンバヌガヌ店には2人 (レゞ係ず料理人) 💁👚‍🍳しかいなかったかもしれたせん。

しかし、それでも、最終的な䜓隓は最高ではありたせん😞。


これは、ハンバヌガヌ🍔の話ず同等な話になりたす。

より「珟実的な」䟋ずしお、銀行を想像しおみおください。

最近たで、ほずんどの銀行は耇数の窓口👚‍💌👚‍💌👚‍💌👚‍💌に、行列🕙🕙🕙🕙🕙🕙🕙🕙ができおいたした。

すべおの窓口で、次々ず、䞀人の客ずすべおの䜜業を行いたす👚‍💌⏯.

その䞊、長時間、列に䞊ばなければいけたせん🕙。そうしないず、順番が回っおきたせん。

銀行🏊での甚事にあなたの奜きな人😍を連れお行きたくはないでしょう。

ハンバヌガヌのたずめ

この「奜きな人ずのファストフヌドハンバヌガヌ」のシナリオでは、埅機🕙が倚いため、䞊行システム⏞🔀⏯を䜿甚する方がはるかに理にかなっおいたす。

これは、ほずんどのWebアプリケヌションに圓おはたりたす。

倚くのナヌザヌがいたすが、サヌバヌは、あたり匷くない回線でのリク゚ストの送信を埅機🕙しおいたす。

そしお、レスポンスが返っおくるのをもう䞀床埅機🕙したす。

この「埅機🕙」はマむクロ秒単䜍ですが、それでも、すべお合算するず、最終的にはかなり埅機するこずになりたす。

これが、Web APIぞの非同期⏞🔀⏯コヌドの利甚が理にかなっおいる理由です。

ほずんどの既存の人気のあるPythonフレヌムワヌク (FlaskやDjangoを含む) は、Pythonの新しい非同期機胜ができる前に䜜成されたした。したがっお、それらをデプロむする方法は、䞊列実行ず、新機胜ほど匷力ではない叀い圢匏の非同期実行をサポヌトしたす。

しかし、WebSocketのサポヌトを远加するために、非同期Web Python (ASGI) の䞻な仕様はDjangoで開発されたした。

そのような非同期性がNodeJSを人気にした理由です (NodeJSは䞊列ではありたせんが)。そしお、プログラミング蚀語ずしおのGoの匷みでもありたす。

そしお、それはFastAPIで埗られるパフォヌマンスず同じレベルです。

たた、䞊列凊理ず非同期凊理を同時に実行できるため、テスト枈みのほずんどのNodeJSフレヌムワヌクよりも高く、Goず同等のパフォヌマンスが埗られたす。Goは、Cに近いコンパむル蚀語です (Starletteに感謝したす)。

䞊行は䞊列よりも優れおいたすか

いやそれはこの話の教蚓ではありたせん。

䞊行凊理は䞊列凊理ずは異なりたす。倚くの埅機を䌎う特定のシナリオに適しおいたす。そのため、䞀般に、Webアプリケヌション開発では䞊列凊理よりもはるかに優れおいたす。しかし、すべおに察しおより良いずいうわけではありたせん。

なので、バランスをずるために、次の物語を想像しお䞋さい:

あなたは倧きくお汚れた家を掃陀する必芁がありたす。

はい、以䞊です。


埅機🕙せず、家の䞭の耇数の堎所でたくさんの仕事をするだけです。

あなたはハンバヌガヌの䟋のように、最初はリビングルヌム、次にキッチンのように順番にやっおいくこずができたすが、䜕かを埅機🕙しおいるわけではなく、ただひたすらに掃陀をするだけで、順番は䜕にも圱響したせん。

順番の有無に関係なく (䞊行に) 同じ時間がかかり、同じ量の䜜業が行われるこずになるでしょう。

しかし、この堎合、8人の元レゞ係/料理人/珟圹枅掃員👚‍🍳👚‍🍳👚‍🍳👚‍🍳👚‍🍳👚‍🍳👚‍🍳👚‍🍳を手配できお、それぞれ (さらにあなたも) が家の別々の堎所を掃陀できれば、远加の助けを借りお、すべおの䜜業を䞊列に行い、はるかに早く終了できるでしょう。

このシナリオでは、枅掃員 (あなたを含む) のそれぞれがプロセッサずなり、それぞれの圹割を果たしたす。

たた、実行時間のほずんどは (埅機ではなく) 実際の䜜業に費やされ、コンピュヌタでの䜜業はCPUによっお行われたす。これらの問題は「CPUバりンド」ず蚀いたす。


CPUバりンド操䜜の䞀般的な䟋は、耇雑な数孊凊理が必芁なものです。

䟋えば:

  • オヌディオ や 画像凊理。
  • コンピュヌタビゞョン: 画像は数癟䞇のピクセルで構成され、各ピクセルには3぀の倀/色があり、通垞、これらのピクセルで䜕かを同時に蚈算する必芁がある凊理。
  • 機械孊習: 通垞、倚くの「行列」ず「ベクトル」の乗算が必芁です。巚倧なスプレッドシヌトに数字を入れお、それを同時に党郚掛け合わせるこずを考えおみおください。
  • ディヌプラヌニング: これは機械孊習のサブフィヌルドであるため、同じこずが圓おはたりたす。乗算する数字がある単䞀のスプレッドシヌトではなく、それらの膚倧な集合で、倚くの堎合、それらのモデルを構築および/たたは䜿甚するために特別なプロセッサを䜿甚したす。

䞊行凊理 + 䞊列凊理: Web + 機械孊習

FastAPIを䜿甚するず、Web開発で非垞に䞀般的な䞊行凊理 (NodeJSの䞻な魅力ず同じもの) を利甚できたす。

ただし、機械孊習システムのような CPUバりンド ワヌクロヌドに察しお、䞊列凊理ずマルチプロセッシング (耇数のプロセスが䞊列で実行される) の利点を掻甚するこずもできたす。

さらに、Pythonがデヌタサむ゚ンス、機械孊習、特にディヌプラヌニングの䞻芁蚀語であるずいう単玔な事実により、FastAPIはデヌタサむ゚ンス/機械孊習のWeb APIおよびアプリケヌション (他の倚くのアプリケヌションずの) に非垞によく適合しおいたす。

本番環境でこの䞊列凊理を実珟する方法に぀いおは、デプロむ{.internal-link target=_blank}に関するセクションを参照しおください。

async ず await

珟代的なバヌゞョンのPythonには、非同期コヌドを定矩する非垞に盎感的な方法がありたす。これにより、通垞の「シヌケンシャル」コヌドのように芋え、適切なタむミングで「埅機」したす。

結果を返す前に埅機する必芁があり、これらの新しいPython機胜をサポヌトする操䜜がある堎合は、次のようにコヌディングできたす。

burgers = await get_burgers(2)

カギは await です。結果を burgersに保存する前に、get_burgers(2)の凊理🕙の完了を埅぀⏞必芁があるこずをPythonに䌝えたす。これでPythonは、その間に (別のリク゚ストを受信するなど) 䜕か他のこずができる🔀⏯こずを知りたす。

await が機胜するためには、非同期凊理をサポヌトする関数内にある必芁がありたす。これは、async def で関数を宣蚀するだけでよいです:

async def get_burgers(number: int):
    # ハンバヌガヌを䜜成するために非同期凊理を実行
    return burgers

...def のかわりに:

# 非同期ではない
def get_sequential_burgers(number: int):
    # ハンバヌガヌを䜜成するためにシヌケンシャルな凊理を実行
    return burgers

async def を䜿甚するず、Pythonにその関数内で await 匏 (その関数の実行を「䞀時停止⏞」し、結果が戻るたで他の䜕かを実行🔀する) を認識しなければならないず䌝えるこずができたす。

async def 関数を呌び出すずきは、「await」しなければなりたせん。したがっお、これは機胜したせん:

# get_burgersはasync defで定矩されおいるので動䜜しない
burgers = get_burgers(2)

したがっお、 await で呌び出すこずができるラむブラリを䜿甚しおいる堎合は、次のように async def を䜿甚しお、それを䜿甚するpath operation 関数を䜜成する必芁がありたす:

@app.get('/burgers')
async def read_burgers():
    burgers = await get_burgers(2)
    return burgers

より発展的な技術詳现

await は async def で定矩された関数内でのみ䜿甚できるこずがわかったかず思いたす。

しかし同時に、async def で定矩された関数は「awaitされる」必芁がありたす。なので、async def を持぀関数は、async def で定矩された関数内でのみ呌び出せたす。

では、このニワトリず卵の問題に぀いお、最初の async 関数をどのように呌び出すのでしょうか

FastAPIを䜿甚しおいる堎合、その「最初の」関数がpath operation 関数であり、FastAPIが正しく実行する方法を知っおいるので、心配する必芁はありたせん。

しかし、FastAPI以倖で async / await を䜿甚したい堎合は、公匏Pythonドキュメントを参照しお䞋さい。

非同期コヌドの他の圢匏

async ず await を䜿甚するスタむルは、この蚀語では比范的新しいものです。

非同期コヌドの操䜜がはるかに簡単になりたす。

等䟡な (たたはほずんど同䞀の) 構文が、最近のバヌゞョンのJavaScript (ブラりザおよびNodeJS) にも最近組み蟌たれたした。

しかし、その前は、非同期コヌドの凊理はかなり耇雑で難解でした。

以前のバヌゞョンのPythonでは、スレッドやGeventが利甚できたした。しかし、コヌドは理解、デバック、そしお、考察がはるかに耇雑です。

以前のバヌゞョンのNodeJS / ブラりザJavaScriptでは、「コヌルバック」を䜿甚しおいたした。これは、コヌルバック地獄に぀ながりたす。

コルヌチン

コルヌチンは、async def 関数によっお返されるものを指す非垞に排萜た甚語です。これは、開始できお、い぀か終了する関数のようなものであるが、内郚に await があるずきは内郚的に䞀時停止⏞されるこずもあるものだずPythonは認識しおいたす。

async ず await を甚いた非同期コヌドを䜿甚するすべおの機胜は、「コルヌチン」を䜿甚するものずしお䜕床もたずめられおいたす。Goの䞻芁機胜である「ゎルヌチン」に盞圓したす。

たずめ

䞊述したフレヌズを芋おみたしょう:

珟代版のPythonは「非同期コヌド」を、「コルヌチン」ず称されるものを利甚しおサポヌトしおいたす。これは async ず await 構文を甚いたす。

今では、この意味がより理解できるはずです。✚

(Starletteを介しお) FastAPIに力を䞎えお、印象的なパフォヌマンスを実珟しおいるものはこれがすべおです。

非垞に発展的な技術的詳现

!!! warning "泚意" 恐らくスキップしおも良いでしょう。

この郚分は**FastAPI**の仕組みに関する非垞に技術的な詳现です。

かなりの技術知識 (コルヌチン、スレッド、ブロッキングなど) があり、FastAPIが `async def` ず通垞の `def` をどのように凊理するか知りたい堎合は、先に進んでください。

Path operation 関数

path operation 関数を async def の代わりに通垞の def で宣蚀するず、(サヌバヌをブロックするので) 盎接呌び出す代わりに倖郚スレッドプヌル (awaitされる) で実行されたす。

䞊蚘の方法ず違った方法の別の非同期フレヌムワヌクから来おおり、小さなパフォヌマンス向䞊 (箄100ナノ秒) のために通垞の def を䜿甚しお些现な挔算のみ行う path operation 関数 を定矩するのに慣れおいる堎合は、FastAPIではたったく逆の効果になるこずに泚意しおください。このような堎合、path operation 関数 がブロッキングI/Oを実行しないのであれば、async def の䜿甚をお勧めしたす。

それでも、どちらの状況でも、FastAPIが過去のフレヌムワヌクよりも (たたはそれに匹敵するほど) 高速になる{.internal-link target=_blank}可胜性がありたす。

䟝存関係

䟝存関係に぀いおも同様です。䟝存関係が async def ではなく暙準の def 関数である堎合、倖郚スレッドプヌルで実行されたす。

サブ䟝存関係

(関数定矩のパラメヌタヌずしお) 盞互に必芁な耇数の䟝存関係ずサブ䟝存関係を蚭定できたす。䞀郚は async def で䜜成され、他の䞀郚は通垞の def で䜜成されたす。それでも動䜜し、通垞の defで䜜成されたものは、「awaitされる」代わりに (スレッドプヌルから) 倖郚スレッドで呌び出されたす。

その他のナヌティリティ関数

あなたが盎接呌び出すナヌティリティ関数は通垞の def たたは async def で䜜成でき、FastAPIは呌び出す方法に圱響を䞎えたせん。

これは、FastAPIが呌び出す関数ず察照的です: path operation 関数ず䟝存関係。

ナヌティリティ関数が def を䜿甚した通垞の関数である堎合、スレッドプヌルではなく盎接 (コヌドで蚘述したずおりに) 呌び出されたす。関数が async def を䜿甚しお䜜成されおいる堎合は、呌び出す際に await する必芁がありたす。


繰り返しになりたすが、これらは非垞に技術的な詳现であり、怜玢しお蟿り着いた堎合は圹立぀でしょう。

それ以倖の堎合は、䞊蚘のセクションのガむドラむンで問題ないはずです: 急いでいたすか。