matrix-org / matrix-org/matrix-python-sdk

No rate limiting

オープン
#6 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

Api layer architecture enhancement
主要言語
Python
スター
266
フォーク
118
PR マージ指標
30日以内にマージされた PR はありません

説明

~/Projects/mcat $ cat mcat.py | env/bin/python mcat.py --room "!CJDvntNEPGQmykeIrB:whatthefuck.computer" --stdin -c ~/.mcatrc 
Traceback (most recent call last):
  File "mcat.py", line 55, in <module>
    mcat.f_to_matrix(sys.stdin)
  File "mcat.py", line 24, in f_to_matrix
    self.room.send_text(line)
  File "/home/rrix/Projects/mcat/env/lib/python2.7/site-packages/matrix_client/client.py", line 169, in send_text
    return self.client.api.send_message(self.room_id, text)
  File "/home/rrix/Projects/mcat/env/lib/python2.7/site-packages/matrix_client/api.py", line 194, in send_message
    self.get_text_body(text_content, msgtype)
  File "/home/rrix/Projects/mcat/env/lib/python2.7/site-packages/matrix_client/api.py", line 183, in send_message_event
    return self._send("PUT", path, content)
  File "/home/rrix/Projects/mcat/env/lib/python2.7/site-packages/matrix_client/api.py", line 319, in _send
    code=response.status_code, content=response.text
matrix_client.api.MatrixRequestError: 429: {"errcode":"M_LIMIT_EXCEEDED","error":"Too Many Requests","retry_after_ms":1214}

The javascript SDK implements a fairly complex queuing system, I'm going to strawman something similar to that, shortly.

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

matrix_client/api.py に示されている送信パス、特に send_message_event と _send から始め、リンクされている matrix-js-sdk の scheduler と比較してください。Issue の traceback には retry_after_ms を含む Matrix のレート制限レスポンスが示されています。完了とするには、これらのレスポンスを処理するキューイングまたはリトライの設計について合意する必要があります。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
javascript, python
領域
api, backend
issue の種類
機能追加
難易度
5/5
見積もり時間
1週間以上
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
25/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。