我不知道如何使用 aync/await。假設我有這個功能:async def test():
result = get_db_data() # to get records from db
return result所以,這里的get_data不是一個異步函數,當我調用test()時,我使用await test()。但我的問題是,代碼被認為是異步的,還是我也應該制作 get_data 和 async func 并用 wait 調用它?請我需要幫助注意:我嘗試在測試函數中添加await asyncio.sleep(30),并且同時測試了2個請求,所以看起來它正在工作,因為它在30秒后返回了兩個結果(所以不需要60秒)秒)
2 回答

天涯盡頭無女友
TA貢獻1831條經驗 獲得超9個贊
背景
這是一個小例子,希望能幫助你理解。說這是你的功能
async def test(): # does something
現在,我們為什么要使其異步?比如說,我們必須在另一個線程方法中使用它。
async def threaded_f(): result = await test() # Some random code to get variable Y Y = Y + result
現在,使 test() 異步的優點是,在 result = test() 行,線程將等待 test() 的結果,因為它的返回值稍后將在代碼中使用。如果它是 void 類型的函數,我們可能不會等待調用并讓線程函數繼續執行。
回答
那么,回答你的問題。是的,您可以使 get_db_data() 異步并等待,因為它與 threaded_f 函數中討論的情況相同。結果需要存儲在變量中。

開心每一天1111
TA貢獻1836條經驗 獲得超13個贊
在回答您的問題時, get_db_data 不會僅僅因為它位于異步測試協程內部而被視為異步。
您需要了解事件循環和協程才能很好地回答您的問題。
如果您的同步例程沒有阻塞,那么您可以擺脫它,但您需要徹底了解它在做什么,以確保它不會導致意外的延遲。如果您不希望您的程序被 get_db_data 阻止,那么您需要使其可等待,例如協程。
添加回答
舉報
0/150
提交
取消