当前位置:  开发笔记 > 编程语言 > 正文

Twitter错误代码429与Tweepy

如何解决《Twitter错误代码429与Tweepy》经验,为你挑选了2个好方法。

我正在尝试使用tweepy api创建一个访问Twitter帐户的项目,但我面临状态代码429.现在,我环顾四周,我发现这意味着我有太多的请求.但是,我一次只发送10条推文,在这些推文中,我的测试中只有一条推文存在.

for tweet in tweepy.Cursor(api.search, q = '@realtwitchess ',lang = ' ').items(10):
                        try:
                                text = str(tweet.text)
                                textparts = str.split(text) #convert tweet into string array to disect
                                print(text)

                                for x, string in enumerate(textparts): 
                                        if (x < len(textparts)-1): #prevents error that arises with an incomplete call of the twitter bot to start a game
                                                if string == "gamestart" and textparts[x+1][:1] == "@": #find games
                                                        otheruser = api.get_user(screen_name = textparts[2][1:]) #drop the @ sign (although it might not matter)
                                                        self.games.append((tweet.user.id,otheruser.id))
                                        elif (len(textparts[x]) == 4): #find moves
                                                newMove = Move(tweet.user.id,string)
                                                print newMove.getMove()
                                                self.moves.append(newMove)
                                if tweet.user.id == thisBot.id: #ignore self tweets
                                        continue

                        except tweepy.TweepError as e:  
                                print(e.reason)
                                sleep(900)
                                continue
                        except StopIteration: #stop iteration when last tweet is reached
                                break

当错误出现时,它位于第一个for循环行中.有点奇怪的是,它不是每次都抱怨,甚至是一致的间隔.有时它会起作用,而其他时候,似乎是随机的,不起作用.

我们尝试在循环中添加更长的睡眠时间并减少项目数.



1> 小智..:

在API调用上添加wait_on_rate_limit = True,如下所示:

api = tweepy.API(auth, wait_on_rate_limit=True)

这将使其余代码服从速率限制



2> Giordano..:

您找到了有关错误代码的正确信息.实际上,由于应用程序的速率限制已经耗尽资源,因此无法提供请求时会返回429代码.(来自文档)
我认为您的问题不是数据量而是频率.

检查Twitter API速率限制(对于tweepy来说是相同的).

速率限制分为15分钟.所有端点都需要身份验证,因此没有未经身份验证的调用和速率限制的概念.GET请求有两个初始存储桶:每15分钟15个呼叫,每15分钟180个呼叫.

我认为你可以尝试在这个范围内使用API​​来避免这个问题

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有