0

アマゾンウェブサービスで2つのハンドラーを取得しました。両方でいくつかのデータを共有したいので、グローバル変数を使用しました。ここで、ある値をフェッチしてグローバル変数に配置するために使用される場合、そのように呼び出された別のハンドラーは、グローバル変数に設定されているのと同じ値を使用できますが、別のハンドラーにデフォルト値を与えており、値を設定していることを確認しましたしかし、他の1つでは、同じ値を与えていません。デフォルト値を与えています。もう1つの重要な点は、同じコードがWebfactionalで完全に実行されているが、同じコードがAWSで実行されていないことです。plsは私がしなければならないことを助け、事前に感謝します。ここでmaコードは次のとおりです。

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)
実際にはそれは適切に意図されています...
4

1 に答える 1

1

これは絶対にしないでください。

本番環境では、Django(これはDjangoだと思いますが、そうは言わないのですが、タグに追加しました)はマルチプロセス環境で実行されます。各プロセスには、グローバル変数の独自のコピーがあります。後続のリクエストが同じプロセスで処理されることを保証する方法はありません。

リクエスト間で状態を保持する必要がある場合は、セッションに保存するか、URLパラメーターとして明示的に渡します。

于 2011-08-16T10:13:08.973 に答える