2

我有一個擁有300萬用戶的應用程序,我試圖通過python請求發出〜100,000個POST請求。我對Python仍然非常青睞,所以這就是我目前正在做的事情。我已經識別出約100,000個接收個性化消息的用戶,並且已經刮掉了他們的用戶ID並將它們存儲在文本文件中。這裏是我用來通過我自己的web API向他們發送所有消息的代碼(其中txt文件中的每行都是用戶ID)。在我的API中,發送消息所需的唯一東西是用戶標識和有效負載中的文本正文。標題部分是無關緊要的,只是用於調試的ios/android設備信息。我會如何向用戶發送100,000條獨特消息,最快?

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狀態。所以,這可能會出現重複,但經過Google搜索並搜索完畢後,我找不到適合我的最佳解決方案。以我現在的速度,出於某種原因需要花費一天半的時間才能發送這10萬條需求。

一個解決方案是使用異步。我對此非常開放,但棘手的部分是txt文件。我有100k UNIQUE ID,我需要發佈到。有時它們重疊,然後多個用戶得到相同的信息。我只需要指出我想的正確方向。非常感謝您的時間:)

+1

把這個文件分成1000個文件,然後用每個線程一個文件運行請求代碼。不是最好的解決方案,但可能會工作 –

+0

@ArpitSolanki在盒子外思考!這可能是我最終要做的! :D –

+0

注意CPU使用率和帶寬,因爲你可能不想讓服務器崩潰。 1K線程是大號 –

回答

2

將這個文件的所有用戶分成1000個文件,然後運行請求代碼與每個線程一個文件。所以這會爲每個文件創建100個用戶,所以如果你在服務器上運行這個1K線程就不會有太大問題。這也會減少太多的時間成本幾乎1/1000。你可能想看看Threads

相關問題