2011-11-18 54 views
3

我目前正在研究一個Django項目,希望通過網絡對videofiles進行一些轉換。爲了對視頻進行轉換,我使用了opencv的python API,並且我還正在使用Dajax來執行ajax請求。Django在請求之間共享不可取消的對象

在AJAX請求文件I有以下代碼:

@dajaxice_register 
    def transform_and_show(request, filename, folder, frame_count, img_number): 
     detector = Detector(filename) //Object which uses opencv API 
     dajax = Dajax() 
     generated_file = detector.detect_people_by_frame(folder, str(img_number)) 
     dajax.assign('#video', 'src', '/media/generated'+folder+generated_file) 
     return dajax.json() 

想法是通過幀變換分析視頻幀和一個IMG標記顯示在瀏覽器中的每個變換的幀給予感覺給用戶他/她正在觀看轉換後的視頻,因此此方法在JavaScript循環中調用。

問題是,在這種方法中,對象「檢測器」在每次迭代中都會重新初始化,因此它只會生成與視頻的第一幀相對應的圖像。我的想法是通過在請求之間使「檢測器」持久化來解決此問題,以便在每個請求上指向視頻的下一幀的指針不會設置爲0。 問題是Dectector對象不可用,這意味着它不能被緩存或保存到會話對象。

有什麼我可以做的,使它在請求之間持久?

注意:我已經考慮過使用HTTP推送方法,如APE或Orbit,但由於這只是一個調查項目,所以對性能沒有真正的關注。

+0

有人回答了你? – sureshvv

+0

不,你是第一個 –

回答

0

您是否嘗試過模塊級變量來存儲對象?

使「檢測器」成爲文件級別的全局。

detector = None 

def transform(): 
    global detector 
    if detector is None: 
     detector = Detector(filename) 
    file = detector.detect(....) 
+0

不,這是關於什麼? –

+0

使「djax」成爲文件級別的全局。 – sureshvv