Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何以最快的速度向我的用户发布100000条独特的消息?_Python_Http_Asynchronous_Python Requests_Python Multithreading - Fatal编程技术网

Python 如何以最快的速度向我的用户发布100000条独特的消息?

Python 如何以最快的速度向我的用户发布100000条独特的消息?,python,http,asynchronous,python-requests,python-multithreading,Python,Http,Asynchronous,Python Requests,Python Multithreading,我有一个拥有300万用户的应用程序,我正试图通过python请求发出约100000个POST请求。我对Python还是很生疏,下面是我目前正在做的事情。我已经确定了大约100000名用户将收到一条个性化消息,并已将其用户ID刮取并存储在一个文本文件中。下面是我用来通过自己的web API向他们发送消息的代码(txt文件中的每一行都是用户ID)。在我的API中,发送消息只需要用户ID和有效负载中的文本体。标题部分是无关的,只是用于调试的ios/android设备信息 with open("user

我有一个拥有300万用户的应用程序,我正试图通过python请求发出约100000个POST请求。我对Python还是很生疏,下面是我目前正在做的事情。我已经确定了大约100000名用户将收到一条个性化消息,并已将其用户ID刮取并存储在一个文本文件中。下面是我用来通过自己的web API向他们发送消息的代码(txt文件中的每一行都是用户ID)。在我的API中,发送消息只需要用户ID和有效负载中的文本体。标题部分是无关的,只是用于调试的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状态。所以,这可能会被认为是一个重复,但在谷歌搜索了这里之后,我并没有找到一个最适合我的解决方案。以我目前的速度,出于某种原因,发送这100000个请求需要一天半的时间


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

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

将此文件拆分为1000个文件,然后使用每个线程一个文件运行请求代码。不是最好的解决方案,但可能work@ArpitSolanki跳出框框思考!这可能就是我最后要做的因为您可能不想使服务器崩溃,所以需要对cpu使用率和带宽进行DWatch。1K线程是大的number@ApritSolanki请将此作为答案发布,以便我可以接受!我分为20个文件,运行20个线程。即使把工作时间缩短1/20对我来说也很漂亮。谢谢你的帮助,老板!