【问题标题】:Tweepy is slow for big twitter accounts对于大型 Twitter 帐户,Tweepy 很慢
【发布时间】:2020-05-31 17:08:41
【问题描述】:

我正在用 tweepy 制作一个推特监视器,它每秒通过 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()

【问题讨论】:

    标签: python asynchronous twitter tweepy twitterapi-python


    【解决方案1】:

    您应该使用流式传输端点:
    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 次查询调用。这意味着您想要跟踪的人越多,允许您检查的频率就越低,这意味着会有很大的延迟。

    流式端点的缺点是它只会显示新发布的状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-14
      • 2020-11-13
      • 1970-01-01
      • 1970-01-01
      • 2021-01-07
      • 2018-09-06
      • 2021-12-27
      • 2016-10-21
      相关资源
      最近更新 更多