やりたいこと
twitter apiでレート制限になった際、時間をおいてから再度リクエストを送信する関数を作成したいと思っています
その方法として再帰関数を使おうと考えたのですがうまくいきません
方法としてはなんでもよいので、なにかあれば教えてください
## 再帰関数
countは再帰処理を実行させるためにつけたものです
通常であればレート制限がかかった際にのみ再帰処理を行うようにします
python
1twitter = OAuth1Session(CK, CS, AT, AS) 2def oauth_get(url,user=twitter,params="",files="",count=1): 3 req=user.get(url, params = params,files=files) 4 print(url) 5 print(params) 6 print(files) 7 print(count) 8 print(req.status_code) 9 10 if req.status_code == 200 and not count==1: 11 print("OK") 12 result=json.loads(req.text) 13 return result 14 elif req.status_code in (420,429) or count==1: 15 print("待ち") 16 #time.sleep(900) 17 oauth_get(url=url,params=params,files=files,count=0) 18 else: 19 print(req) 20 return "error" 21 22def home_timeline(): 23 # タイムライン取得用のURL 24 url = "https://api.twitter.com/1.1/statuses/home_timeline.json" 25 params = {"count":1} 26 27 result=oauth_get(url=url,params=params) 28 print(result) 29 30
実行結果
https://api.twitter.com/1.1/statuses/home_timeline.json
{'count': 1}
1
200
待ち
https://api.twitter.com/1.1/statuses/home_timeline.json
{'count': 1}
0
200
OK
None
返却値がNoneになってしまいます
もちろん再帰処理をしない時にはちゃんと返却値はあります
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。