2011-09-03 60 views
3

我使用eventlet構建了一個從this example開始的簡單網站爬蟲。 我想使用SQLAlchemy來存儲網頁的內容和元數據以便進一步處理。可以將SQLAlchemy和eventlet一起使用?有誰能提供一個簡單的例子嗎?在SQLAlchemy中使用eventlet

回答

3

對不起,延遲迴復。

它真的取決於你使用的數據庫連接庫。

  • 對於C擴展庫,像MySQLdb的,Eventlet具有db_pool模塊如在OpenStack example使用。基本上,它創建一個操作系統線程池來執行阻止數據庫操作。所以你不可能真的有很多並行查詢,但是很可能你的數據庫無法繼續存在,所以這不是問題。
  • 對於純Python庫,如myconnpy,pg8000,然後只需撥打eventlet.monkey_patch()即可。
  • 作爲一種特殊情況,Eventlet支持psycopg2的猴子補丁。這是一個C擴展,但它足以提供IO鉤子,所以你可以兩全其美。再次,簡單的撥打monkey_patch()就可以做到這一點。
6

OpenStackCompute (Nova)項目使用SQLAlchemy和eventlet,您可能會對their approach感興趣。

+0

這應該是公認的答案。最好的方法是在SQLAlchemy NullPoll中使用eventlet db_pool模塊。 –