2

我有一個需要同時測試功能和性能的Web應用程序,我們計劃使用的測試套件的一部分已經用Python編寫。當我第一次寫這篇文章的時候,我使用機械化作爲我的網頁抓取手段,但是對於我想要做的事情(無論是這個還是我錯過了一些東西)來說,它似乎太龐大了。Python網絡抓取線程性能

我想要做的基本佈局如下。所有都是對象。

  • 用戶具有通訊(曾經是我的東西之間的接口和機械化)
  • 通訊具有瀏覽器(持有我CookieJar,urllib2的,和BeautifulSoup對象,曾經是機械化)
  • 瀏覽器有表格( s)(過去是機械化處理的)

現在,就線程而言,我已經這麼做了。處理GIL和單獨運行Python實例之間的調整將根據需要進行,但會提出建議。

所以我需要做的是線程用戶點擊應用程序並做各種事情(登錄,填寫表單,提交表單進行處理等),同時又不會讓測試框尖叫得太大聲。我目前的機械化問題似乎是RAM。

導致RAM問題的部分原因是每個用戶都需要單獨的瀏覽器實例,以防止每次用不同的用戶執行某些操作時覆蓋JSESSIONID Cookie。

其中大部分內容可能看起來微不足道,但我試圖在這裏運行數千個線程,所以微小的調整可能意味着很多。任何輸入讚賞。

回答

0

我竟然沒有使用機械化,並使用線程模塊。這允許相當快速的交易,並且我也確保在每個線程中不會有太多內容。登錄信息以及在我的線程幫助線程運行得更短,因此更快的情況下讓webapp處於所需的狀態。

0

您是否認爲Twisted是異步庫,至少與用戶進行交互?

1

線程化會導致GIL出現問題,使用更多內核時更是如此。嘗試使用機械化與eventlet實現併發(通過多個進程)也檢出multi-mechanize