# APIロック

この章で説明するインターフェースは、すべてのAPIインターフェースをロックするために使用されます。これにより、APIを現在のDeviceインスタンスのみが使用できるようにロックし、他のユーザーやプロセスによるAPIの使用を防ぐことができます。デフォルトのロック時間を設定したり、ロックを定期的に更新したりすることが可能です。定期的に更新する方法を推奨します。また、APIロックを能動的に解放することもできます。安全なロック手順は次のとおりです：ロックの取得 -> ロックを定期的に更新するためのスレッドの作成 -> ロックの解放。

## ロックの取得

ロックを取得します。このロックは60秒後に自動的に解放され、その後、他のクライアントがロックを取得できるようになります。この時間は変更可能ですが、あまりにも長く設定しすぎると、スクリプトが異常終了した場合に、デバイスにほぼ永久に接続できなくなる可能性があります。接続を再開するには、デバイスの再起動が必要になる場合があります。このインターフェースは再入可能（リエントラント）であり、再入時には `_refresh_lock` と等価です。

```python
d._acquire_lock(leaseTime=60)
```

## ロックの解放

APIロックを能動的に解放します。解放後、他のクライアントがロックを取得できるようになります。

```python
d._release_lock()
```

## ロックの更新

ロックを更新します。呼び出すたびに、ロックの有効期限がこの `leaseTime` に設定されます。APIのロックを維持するために、このインターフェースを定期的に呼び出してください。同様に、`leaseTime` をあまりにも長く設定しすぎると、スクリプトが異常終了した場合に、デバイスにほぼ永久に接続できなくなる可能性があります。

```python
d._refresh_lock(leaseTime=60)
```