Google App Engine के साथ विकास मोड में सत्र दृढ़ता

मेरे पास ऐप इंजन में सक्षम सत्र है जो पूरी तरह से ठीक काम करता है ऐप तैनात किया गया है। मेरी समस्या यह है कि यह विकास मोड में काम नहीं करता है। मुझे विकास मोड में कहीं भी सत्र (डिस्क, डेटास्टोर, मेमोरी) सत्रों को जारी रखने की ज़रूरत है ताकि हर बार जब मैं स्थानीय सर्वर को पुनरारंभ करता हूं (जो हर बार जब मैं सर्वर या साझा कोड में परिवर्तन करता हूं) तो मुझे अपने ऐप में लॉग इन करने की ज़रूरत नहीं है। ।

मैं आमतौर पर जेटी-वेब.एक्सएमएल में हैशशन मैनेजर को परिभाषित करके ऐसा करता हूं, लेकिन जाहिर है (और समझ में आता है) ऐप इंजन स्पष्ट रूप से अक्षम करता है सुरक्षा कारणों से कॉन्फ़िगरेशन फ़ाइल।

क्या कोई ऐप इंजन में स्थानीय सत्र दृढ़ता प्राप्त करने का मानक तरीका जानता है, मानते हुए कि कोई अस्तित्व में है?

मेरे पास appengine-web.xml में निम्न संबंधित रेखाएं हैं:

  true
  

मैं ऐप इंजन एसडीके के संस्करण 1.6.5 (नवीनतम) का उपयोग कर रहा हूं।

यहां कुछ कदम दिए गए हैं:

मेरे सर्वर-साइड क्लास में RemoteServiceServlet को विस्तारित करते हुए, मैंने निम्न पंक्ति को जोड़ा:

public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
   //Added this line
    System.out.println(request.getSession().getCreationTime());
    ...
}

मैंने देव मोड सर्वर को पुनरारंभ किया, मेरे ऐप को लोड किया और मेरे ऐप के हर अनुरोध के लिए "1337796704817" मिला, यह दर्शाता है कि अनुरोध के बीच एक ही सत्र उपयोग में है। फिर, मैंने देव मोड सर्वर को पुनरारंभ किया, और अगला अनुरोध "1337796798184" उत्पन्न हुआ, जो दर्शाता है कि एक नया सत्र बनाया गया था।

जैसा कि नीचे बताया गया है, मैं Google क्लाउड एसक्यूएल का उपयोग कर रहा हूं, और मैंने ऐप इंजन सेटिंग्स में डेटास्टोर विकल्पों को अक्षम कर दिया है, हालांकि यह तैनात होने पर कोई समस्या नहीं प्रतीत होता है। साथ ही, मैंने उन विकल्पों के साथ ऊपर दिए गए चरणों का प्रयास किया, और एक ही परिणाम प्राप्त हुए।

2
जोड़ा संपादित
विचारों: 1

2 उत्तर

सत्र डेटास्टोर को जारी रखा जाता है। जब तक आप dev_appserver को पुनरारंभ करते समय डेटास्टोर को साफ़ नहीं कर रहे हैं, तब तक आपके सत्र बने रहेंगे। जांचें कि आप प्रत्येक पुनरारंभ पर डेटास्टोर को साफ़ नहीं कर रहे हैं।

0
जोड़ा
तो आप कह रहे हैं कि जब तक मैं स्टार्टअप पर डेटास्टोर को साफ़ करने के अपने रास्ते से बाहर नहीं जा रहा हूं, सत्रों को भी देव मोड में जारी रखा जाना चाहिए? वर्तमान में यह तैनात किए जाने पर काम करता है, लेकिन मैंने पुष्टि की है कि विकास मोड सत्र डेटास्टोर को नहीं लिखे जा रहे हैं, और मैं इसे साफ़ नहीं कर रहा हूं। ध्यान देने योग्य बात यह है कि, मैं किसी और चीज़ के लिए डेटास्टोर का उपयोग नहीं कर रहा हूं, मैं Google क्लाउड एसक्यूएल का उपयोग कर रहा हूं, और मेरे पास "सक्षम एचआरडी समर्थन" सक्षम है और "डेटास्टोर तक पहुंचने के लिए डेटाान्यूक्लियस जेडीओ/जेपीए का उपयोग करें" ऐप इंजन सेटिंग्स में अनचेक किया गय
जोड़ा लेखक tangent, स्रोत

यदि आपके पास cookie_args.domain मान सेट है (जैसा कि वेबपैप सत्र ), तो यह आपके विकास सर्वर पर काम नहीं करेगा। यही है, यदि डोमेन .mydomain.com पर सेट है, तो यह आपके विकास सर्वर localhost: 8000 से काम नहीं करेगा।

उदाहरण के लिए, यदि आपका main.py इसमें कॉन्फ़िगर ऑब्जेक्ट है:

config = {
    'webapp2_extras.sessions': {
        'secret_key': '**secret_key**',
        'cookie_args': {'domain': '.mydomain.com', 'httponly': True}
    }
}

समाधान कुछ सशर्त कोड लिखना है:

import os
domain = None if os.environ['SERVER_SOFTWARE'].startswith('Development') else '.mydomain.com'

config = {
    'webapp2_extras.sessions': {
        'secret_key': '**secret_key**',
        'cookie_args': {'domain': domain, 'httponly': True}
    }
}
WSGIApplication(Routing, config=config, debug=True)
0
जोड़ा