我在寫一個使用Python和金字塔的網絡工具。它使用MySQLdb訪問MySQL數據庫,並根據用戶輸入進行查詢。我爲該工具創建了一個用戶帳戶,併爲其使用的表格授予了讀取權限。從一個網站的多個視圖訪問MySQL
當我在單個選項卡中打開頁面時,它工作正常,但如果我嘗試將其加載到第二個選項卡中,則該頁面將無法加載,直到第一次搜索完成。有沒有辦法解決這個問題,或者我只是試圖錯誤地使用MySQL?
我在寫一個使用Python和金字塔的網絡工具。它使用MySQLdb訪問MySQL數據庫,並根據用戶輸入進行查詢。我爲該工具創建了一個用戶帳戶,併爲其使用的表格授予了讀取權限。從一個網站的多個視圖訪問MySQL
當我在單個選項卡中打開頁面時,它工作正常,但如果我嘗試將其加載到第二個選項卡中,則該頁面將無法加載,直到第一次搜索完成。有沒有辦法解決這個問題,或者我只是試圖錯誤地使用MySQL?
@AlexIvanov試圖說的是,當您在控制檯中啓動Pyramid應用程序時,它會使用Pyramid的內置開發服務器提供服務。這個服務器是單線程的,並且一個接一個地提供請求,所以如果你有一個需要15秒的長請求 - 你將無法在另一個選項卡中使用你的應用程序,直到這個長請求完成。內置網絡服務器的這種連續性實際上是一個非常棒的功能,它極大地簡化了調試。
在製作中,您的金字塔應用程序通常由「真實」網絡服務器提供服務,例如Apache或Nginx。這樣的網絡服務器通常產生多個「工作者」,或者使用多個線程來允許他們服務多個併發請求。
所以我懷疑你的設置沒有問題(假設你沒有對Pyramid最初的腳手架做任何特別的事情,它仍然使用配置了ZopeTransactionExtension等的SQLAlchemy的會話)。
「單一共享MySQL帳戶」絕不會阻止多個連接的客戶端在MySQL中同時運行查詢 - 事實是,開發服務器只有一個單線程客戶端。
是不是你對MySQL的期望太高了? – Drew
AFAIK所有命令都是一個接一個地執行,因爲用戶是一個。它是萬維網數據。執行速度取決於Web服務器的速度。在前一個命令結束之前,您不能執行另一個命令。金字塔利用一個有趣的內置服務器。試試apache。 –
對,我想要爲每個網站用戶同時訪問。一個共享的MySQL賬戶似乎是一個錯誤的方式來做到這一點。什麼是正確的方式? – ate50eggs