我正在使用 tweepy 制作一个 Twitter 监视器,每秒它都会通过 user_timeline(user, count=2) 从帐户获取最新的 2 条推文,如果它们是新推文,它会发送一条不和谐通知。
对于像我这样的小帐户来说,这一切都运行得非常好,其中我只有几条推文。自推文创建以来,延迟只有 0.5 秒。现在,我正在使用更大的帐户进行测试,例如,创建的推文总数超过 1000 条。现在延迟最短为 2 秒,最长为 30 秒。
你知道这是为什么吗?还有其他更有效的方法来完成同样的任务吗?我一开始以为这是因为它默认获取最新的 200 条推文,但我通过在 user_timeline 函数中添加“count=2”来更改此设置,延迟仍然相同。
PD: 我使用仅应用程序身份验证,这是我的代码的一部分:
async def monitor_user(self, api, username, last_updated):
data = []
try:
fut = self.client.loop.run_in_executor(
None, lambda: api.user_timeline(username, count=2)
)
await fut
tweets = fut.result()
最佳答案
您应该使用流端点:
http://docs.tweepy.org/en/latest/streaming_how_to.html
有了它,您可以关注 5000 个 Twitter 用户、跟踪 400 个关键字并实现 25 个位置框:
https://developer.twitter.com/en/docs/tweets/filter-realtime/api-reference/post-statuses-filter
发布的新状态会在 2 秒内到达,这比查询个人 Twitter 帐户要快得多。 user_timeline 端点的速率限制为每 15 分钟 180 次查询调用。这意味着您想要跟踪的人越多,您被允许检查的频率就越低,这意味着将会出现明显的延迟。
流式传输端点的缺点是它只会显示新发布的状态。
关于python - Tweepy 对于大型 Twitter 帐户来说速度很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60251081/