2011-08-16 18 views
0

我在亞馬遜網絡服務中有兩個處理程序。我想分享一些數據,所以我使用全局變量。其中一個用於獲取某個值並在另一個處理程序調用時將其放到全局變量中可以使用相同的值在全局變量中設置的值,但是它在另一個處理程序中給出默認值,並且我已經檢查過它是設置值但在另一個它是給予默認值不相同。還有一件事是相同的代碼在webfactional中運行完美,但相同的代碼不在AWS中運行。請幫助我必須做的事情,並提前致謝。這裏馬代碼:全局變量在亞馬遜網絡服務中不起作用

ipid_global = 0 
uhid_global = 0 

def patient_search: 

    global ipid_global 
    global uhid_global 

    patient = PatientInfo.objects.get(ip_id__iexact=ip_id) 
    dis_advice = PatientAdvice.objects.get(ip_id__iexact=ip_id) 

    ipid_global = int(patient.ip_id) 
    uhid_global = str(patient.uh_id) 



def patient(request): 

     global ipid_global 
     global uhid_global 

     ip_id = ipid_global 
     uh_id = uhid_global 

     return HttpResponse(ipid_global) 
在實際它是正確indended ...
+1

和往常一樣的問題:你在第3行有一個bug。 –

+0

@ daniel-roseman什麼bug? –

+0

這是一個笑話。如果您沒有向我們展示過,我們應該如何調試您的代碼? –

回答

1

永遠不要這樣做。

在生產中,Django(我認爲這是Django,儘管你沒有這麼說 - 我已經將它添加到標籤中)運行在多進程環境中。每個進程都有自己的全局變量副本。有沒有辦法來確保後續請求由同一個進程提供服務。

如果您需要在請求之間保持狀態,請將其保存在會話中,或者將其明確傳遞爲URL參數。

+0

首先感謝回覆,用request.session完成['ip_id'] =