Глобальная переменная не работает в Amazon Web Service - PullRequest
0 голосов
/ 16 августа 2011

У меня есть два обработчика в Amazon Web Service.Я хочу поделиться некоторыми данными в обоих, поэтому я использовал глобальную переменную.где один используется для извлечения некоторого значения и помещения его в глобальную переменную, когда другой обработчик, вызываемый так, может использовать то же значение, которое установлено в глобальной переменной, но он дает значение по умолчанию в другом обработчике, и я проверил, что оно устанавливает значениено в другом он не дает того же самого, он дает значение по умолчанию.Еще одно замечание: тот же код отлично работает в 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)
На самом деле это правильно с отступом ...

1 Ответ

1 голос
/ 16 августа 2011

Никогда не делай этого.

В производстве Django (я предполагаю, что это Django, хотя вы этого не говорите - я добавил его к тегам) работает в многопроцессорной среде. Каждый процесс имеет свою собственную копию глобальных переменных. невозможно обеспечить, чтобы последующие запросы обслуживались одним и тем же процессом.

Если вам нужно сохранить состояние между запросами, сохраните его в сеансе или передайте его явно в качестве параметра URL.

...