假設我們有一些IO操作的異步調用,我們想記錄它。 最簡單的方法是這樣的:記錄異步調用的正確/常用方式
async def f():
logger.log('io was called')
await call_some_io()
但我們當我們運行log()
功能,切換的情況下,並記錄別的東西,只有這樣執行call_some_io()
後明顯可以打的情況。
下一頁方法看起來更健壯:
async def f():
await call_some_io()
logger.log('io was called')
我們正在等待call_some_io()和後我們會記錄它。看起來在這種情況下,我們有一致的呼叫。
但有使用上下文管理第三種方式:
async def f():
with LoggingContext:
await call_some_io()
而這裏LoggingContext
一些ContextManager其中__exit__
方法有一些記錄電話。
所以問題是:哪種方法來記錄異步調用是最常見和強大的?
好的,謝謝!它們中最常見的是什麼? – Paul
我只能爲自己說話,我會在執行操作後記錄消息,除非操作需要很長時間。 – Fabian