2013-06-04 85 views
0

我使用PyV8,我得到這個錯誤:PyV8:事件隊列滿

#... 
    File "code\engine\window.py", line 345, in run_script 
    res = self.js_context.eval(js) 
error: Event queue full 

我確實同時運行多個事情。我怎樣才能解決這個限制?我還沒有設法找到任何地方提到這一點...只在一次運行在.eval()的麻煩是,我有JavaScript代碼調用python代碼,調用回javascript代碼...

+0

是否有可能您有從JS到Python的某種無限遞歸併返回?如果是這樣,在解釋器中用完堆棧空間/遞歸限制之前,可以很容易地進入這個井。 – abarnert

+0

@abarnert:好的想法,但不,這是一個有限的案例。只是這個: - python - > javascript - > python - > javascript。具體來說:我從python運行一個JS腳本,它調用一個'require' python函數,該函數在從磁盤加載的腳本上調用'.eval'。 – Claudiu

+0

好吧,我懷疑你要麼需要發佈一個[SSCCE](http://sscce.org),跟蹤從'window.py'開始的代碼,或者在調試器中運行它,因爲除非這是比我想象的更常見的問題(它可能是......),似乎任何人都不能僅僅幫助這個信息。 – abarnert

回答

0

哦,男孩。這只是PyV8糟糕的錯誤報告。發生了什麼事是我的應用程序使用pygame,並且在處理它們之前發佈了太多的pygame事件(因此溢出隊列)。我真的希望PyV8會顯示錯誤發生的行號,在從JavaScript代碼調用的python代碼中...

0

我什麼最後做的是保護入口點到JavaScript處理(從新鮮的python)與threading.Lockrequire函數已經「在JS上下文中」繞過了這個鎖,而回到Python並回到JavaScript的回調函數通過鎖。這似乎已經完成了現在的伎倆。我不知道這是不是PyV8.JSLocker的點,但它似乎並沒有很好地使用鎖只有該類...

+0

嗯這似乎不工作。仍然一次只處理一件事,我得到錯誤。時間更多的調查... – Claudiu