Redmine を REST API で操作するには python-redmine が便利です。

ただし、Web API の多くは 1 回の API 呼び出しで返されるオブジェクトの数に制限があります。Redmine も例外ではなく、デフォルトで 25 個 (最大 100 個) の制限があります。

このため、何回かに分けて API を実行しないと、すべてのユーザやチケットの処理を実行できません。私は、次のような方法がシンプルだと思います。

offset = 0
while True:
    results = redmine.user.all(offset = offset) # redmine は事前に生成
    if results:
        offset += len(results)
    else:
        break
    for user in results:
        # ユーザ user に対する任意の処理..

この方法だと、サーバが 1 回の呼び出しで何個のオブジェクトを返すかを意識する必要はありません。取得できるオブジェクトが 0 個になるまで、オフセット位置を進めながら API を実行すれば良いのです。

n 回で取得できる数の場合でも、かならず n+1 回 API を呼び出してしまいますが、それよりも、コードが読みやすい方が良いでしょう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)