python - Tweepy 对于大型 Twitter 帐户来说速度很慢

标签 python asynchronous twitter tweepy twitterapi-python

我正在使用 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/

相关文章:

javascript - Node.JS 异步/等待处理回调?

android - android 中用于在社交媒体中共享的公共(public)库?

Twitter - 分享按钮,但带有图像

python - 对数据帧中的列执行 str.split 会返回SettingWithCopyWarning

python - 本地使用 dask : to Client() or not to Client()?

asynchronous - 异步调用后的 cudaFree 是否有效?

android - 来自全新安装的 Google IO Twitter Livefeed

python - 当命令从命令提示符正确执行时,在 subprocess.call() 中使用 find 会出错

python - 在 Jinja2 模板中将项目均匀地分成列

javascript - Jasmine 2.0 完成及 afterEach