2014-11-01 82 views
0

我想知道這是否曾經出現過?github3.py:可能與grequests一起使用?

我有下載噸從我們的GitHub的企業實例信息的應用程序(目前沒有使用github3.py但我想將其轉換到使用github3.py的)。基本上,它抓取189個回購站,然後爲每個回購站提取分支,標籤和提交。這顯然很慢,因爲它必須連續執行很多HTTP請求。

不知github3.py可以作出返回grequest對象,這樣我可以有grequests做並行的要求?或許一個替代方案是包裝和具有github3.py設置「併發級別」,並把它拿在做並行請求照顧的能力隱藏grequests。或者,也許一個上下文管理器:

with github3.parallel(): 
    tags = pull_tags(git_repo) 
    branches = pull_branches(git_repo) 

我意識到,這可能是相當具有挑戰性拿出的是,由於它是這樣一個不同的模式有並行運作良好的API。這就是爲什麼我不想用這個混淆問題跟蹤器。

回答

1

這將是非常困難的。圍繞請求grequests和其它包裝不提供會話API(因爲請求的會話並不像線程,因爲他們應該是 - 即他們不是)。如果他們提供了這樣做的方式,那可能會起作用。要做到這一點,最好的方法是創建多個GitHub情況下,一個在每個工作greenlet /線程,每個線程的上下文中使用它們。通過這樣做,您將爲每個greenlet創建一個Session,並且您的操作應該是安全的(只要您不在線程之間傳遞對象)。

相關問題