1

我正在用 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()
4

1 回答 1

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

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

于 2020-02-24T21:25:01.743 回答