Picasso が HTTP 504 エラーを報告して画像が取得できない
Picasso を使用していて HTTP 504 エラーが発生した場合、画像が表示できない原因が本当にサーバー側が HTTP 504 Gateway Timeout を返したからということとは限りません。
Picasso はキャッシュが有効になっている場合、画像をネットワークから取得できなかった時に数回(3回?) 自動的に取得をリトライしますが、最後のリトライではリクエストヘッダに Cache-Control: max-stale=2147483647, only-if-cache
が付与されます。
そしてサーバーがキャッシュを応答できず、ローカルにもキャッシュが存在しない場合、 Picasso (およびその内部で Downloader として使用されている OkHttp)は HTTP 504 を報告します 1。
Picasso が画像ができなかった本当の理由を隠蔽して HTTP 504 を報告してしまうため、 HTTP 504 が原因で画像が取得できなかった場合は OkHttp3Downloader に LoggingInterceptor を適用した OkHttpClient を使用するなどしてさらに詳細なログを取得する必要があります。