リクエストを行うと、アプリケーション情報が返され、その情報が Application オブジェクト自体にキャッシュされます。これは、比較的短い時間内に同じ情報へ再度アクセスする必要があり、更新データのために新たな API リクエストを行うほどの価値がない場合に役立ちます。そのような場合には、Application.cache にアクセスできます。
import squarecloud as square
client = square.Client('API_KEY')
async def example():
app = await client.app('application_id')
# Note that, as no requests have been made, * in the cache will be None
print(app.cache.logs) # None
print(app.cache.status) # None
print(app.cache.backup) # None
# Now let's make some requests
await app.logs()
await app.status()
await app.backup()
# The cache has been updated 🤯
print(app.cache.logs) # LogsData(...)
print(app.cache.status) # StatusData(...)
print(app.cache.backup) # BackupData(...)
キャッシュを更新せずにリクエストを行う
何らかの理由でリクエスト時にキャッシュを更新したくない場合は、update_cache=False 引数を渡すことができます。
import squarecloud as square
client = square.Client('API_KEY')
async def example():
app = await client.app('application_id')
await app.status(update_cache=False)
print(app.cache.status) # None
cache.update に渡す引数が StatusData、LogsData、BackupData のいずれかのインスタンスでない場合、SquareException エラーが発生します。
キャッシュを手動でクリアする
cache.clear を使ってキャッシュを手動でクリアできます。
import squarecloud as square
client = square.Client('API_KEY')
async def example():
app = await client.app('application_id')
await app.status()
print(app.cache.status) # StatusData(...)
app.cache.clear()
print(app.cache.status) # None
キャッシュを手動で更新する
cache.update メソッドを使ってキャッシュを手動で更新することもできます。
import squarecloud as square
client = square.Client('API_KEY')
async def example():
app = await client.app('application_id')
logs = await app.logs()
status = await app.status()
backup = await app.backup()
app.cache.clear() # Clears the cache
app.cache.update(status, logs, backup) # Updates the cache
print(app.cache.logs) # LogsData(...)
print(app.cache.status) # StatusData(...)
print(app.cache.backup) # BackupData(...)