python - 如何以最快的速度向我的用户发布 100,000 条独特的消息?

标签 python http asynchronous python-requests python-multithreading

我有一个拥有 300 万用户的应用程序,我正在尝试通过 python 请求发出约 100,000 个 POST 请求。我对 Python 还很陌生,所以这就是我目前正在做的事情。我已经确定了约 100,000 个将接收个性化消息的用户,并抓取了他们的用户 ID 并将其存储在文本文件中。下面是我用来通过我自己的 Web API 向他们发送消息的代码(其中 txt 文件中的每一行都是一个用户 ID)。在我的 API 中,发送消息所需的唯一内容是有效负载中的用户 ID 和文本正文。 header 部分无关紧要,只是用于调试的 ios/android 设备信息。

with open("users.txt") as f:
    ids = f.read().splitlines()
    for uid in ids:
        payload = {"uid":uid,"text":"my personalized message to each user"}

        result = requests.post(base, data=json.dumps(payload), headers=headers)
        t += 1
        print(t, result)

“t”值是为了让我可以看到进度,结果是为了确保我获得 200 状态。因此,这可能会被认为是重复的,但在谷歌搜索和搜索后,我没有找到最适合我的解决方案。以我现在的速度,由于某种原因发送这 100,000 个请求需要一天半的时间。

一种解决方案是使用异步。我对此非常开放,但棘手的部分是 txt 文件。我有 100k 个唯一 ID 需要发布到。有时它们重叠,然后多个用户收到相同的消息。我只需要指出我认为正确的方向。非常感谢您的宝贵时间:)

最佳答案

将所有用户的这个文件拆分为 1000 个文件,然后每个线程运行一个文件的请求代码。因此,这将为每个文件创建 100 个用户,因此如果您在服务器上运行此文件,那么 1K 线程不会有太大问题。而且这将减少几乎 1/1000 的时间成本。您可能想查看Threads

关于python - 如何以最快的速度向我的用户发布 100,000 条独特的消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45336019/

相关文章:

javascript - 如何处理firebase中过期的用户ID token ?

java - 如何返回 CloseableHttpResponse?

rest - 哪个 HTTP 动词最适合添加/删除多对多关系?

arrays - Swift:如何在循环中逐个 rm Alamofire 获取请求

node.js - 如何串行链接http请求函数

firebase - whenComplete() 方法未按预期工作 - Flutter Async

python - 如何使用立体三角测量从 2D 图像点计算 3D 对象点?

python - 列表对象时出现 Django python 错误

python - pygame 中的 NEON 效果?

javascript - JavaScript 可以设置哪些 HTTP header ?