スクリプトを段階的に実行すると完全に機能しますが、スレッドを使用しているときは 50 ~ 60% 失敗します。Python + mechanize モジュールを使用しています
#setting up the browser
mySite = 'http://example.com/managament.php?'
postData = {'UserID' : '', 'Action':'Delete'}
job_tab1_user1 = [1,2,3]
job_tab2_user1 = [4,5,6]
job_tab1_user2 = [7,8,9]
job_tab2_user2 = [10,12,13]
.... till user1000
#i want to point out that the lists are 100% different
def user1_jobs:
for i in job_tab1_user1:
browser.open("http://example.com/jobs.php?actions="+i)
browser.open(mySite, Post_data)
for i in job_tab2_user1:
browser.open("http://example.com/jobs.php?actions="+i)
browser.open(mySite, Post_data)
def user2_jobs:
for i in job_tab1_user2:
browser.open("http://example.com/jobs.php?actions="+i)
browser.open(mySite, Post_data)
for i in job_tab2_user2:
browser.open("http://example.com/jobs.php?actions="+i)
browser.open(mySite, Post_data)
... and so on till user 1000
そして、私は最終的にそれらを次のように呼び出します。
t_user1 = threading.Thread(target=user1_jobs, args=[])
t_user1.start()
t_user2 = threading.Thread(target=user2_jobs, args=[])
t_user2.start()
1 秒あたり 200 件のリクエストを送信する同様のスクリプトがあり、それらはすべて処理されます。私も time.sleep(2) を使用してみましたが、やはり不足しています。私のスクリプトの何が問題なのかということ以外に、このコードを圧縮する方法があるかどうかという別の質問があります。これは、1000 人のユーザーを使用しており、スクリプトが数千行に達するためです。前もって感謝します。