在Web應用中,如果一個請求執行了耗時間的操作或者該請求的執行時間無法確定,而且對於使用者來說只需要知道伺服器接收了他的請求,並不需要馬上得到請求的執行結果,這樣的操作我們就應該對其進行非同步化處理。如果說使用快取是最佳化網站效能的第一要義,那麼將耗時間或執行時間不確定的任務非同步化則是網站效能最佳化的第二要義,簡單的說就是能推遲做的事情都不要馬上做。
上一章節中講到的發簡訊和上傳檔案到雲端儲存為例,這兩個操作前者屬於時間不確定的操作(因為作為呼叫者,我們不能確定三方平臺響應的時間),後者屬於耗時間的操作(如果檔案較大或者三方平臺不穩定,都可能導致上傳的時間較長),很顯然,這兩個操作都可以做非同步化處理。
在Python專案中實現非同步化處理可以使用多執行緒或藉助三方庫Celery來完成。