গুগল অ্যাপ ইঞ্জিনের সাথে ডেভেলপমেন্ট মোডে সেশন অটলতা

আমি App ইঞ্জিনে সক্ষম সেশান করেছি যা পুরোপুরি ভাল কাজ করে অ্যাপ্লিকেশন স্থাপন করা হয়। আমার সমস্যা হচ্ছে এটি উন্নয়ন মোডে কাজ না দেখায়। আমি উন্নয়ন মোডে কোথাও (ডিস্ক, ড্যাটাষ্টোর, মেমরি) কোথাও সেশনের জন্য কিছু প্রয়োজন যাতে আমি প্রত্যেকবার আমি স্থানীয় সার্ভার পুনরায় চালু করতে পারি না (যা প্রতিটি সময় আমি সার্ভার বা ভাগ করা কোড পরিবর্তন করে) ।

আমি সাধারণত Jetty-web.xml এ HashSessionManager সংজ্ঞায়িত করে এটি করি, কিন্তু দৃশ্যত (এবং বোঝা যায়) App ইঞ্জিন স্পষ্টভাবে নিষ্ক্রিয় করা হয় যে কনফিগার ফাইল নিরাপত্তার কারণে।

কেউ কি এক্সপ্লোর পরিচালনা ইঞ্জিনে স্থানীয় অধিবেশন স্থিরতা অর্জনের আদর্শ উপায় জানেন?

আমার কাছে অ্যাপেনজিইন- web.xml- এ নিম্নলিখিত সম্পর্কিত লাইন আছে:

  true
  

আমি App Engine SDK এর সংস্করণ 1.6.5 (সর্বশেষ) ব্যবহার করছি।

এখানে কিছু পদক্ষেপ নেওয়া হয়েছে:

আমার সার্ভার-সাইড ক্লাসে রিমোটসেভভারসভারলেট প্রসারিত করে, আমি নিম্নলিখিত লাইন যুক্ত করেছি:

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

আমি dev মোড সার্ভার পুনরায় চালু করে, আমার অ্যাপটি লোড করেছিলাম এবং আমার অ্যাপ তৈরি করা প্রতিটি অনুরোধের জন্য "1337796704817" পেয়েছি, একই সেশনের ইঙ্গিতটি অনুরোধগুলির মধ্যে ব্যবহারে। তারপর, আমি ডিভি মোড সার্ভারটি পুনরায় চালু করেছিলাম এবং পরবর্তী অনুরোধটি "1337796798184" তৈরি করে, একটি নতুন সেশন তৈরি করা হয়েছে তা নির্দেশ করে।

নীচের হিসাবে উল্লিখিত, আমি Google মেঘ SQL ব্যবহার করছি, এবং আমি অ্যাপ্লিকেশন ইঞ্জিন সেটিংস মধ্যে datastore বিকল্প অক্ষম করেছি, যদিও এটি স্থাপন করার সময় কোন সমস্যা হতে পারে বলে মনে হয় না। এছাড়াও, আমি উপরের বিকল্পগুলি চেক করে সেই একই বিকল্পগুলি পরীক্ষা করেছি এবং একই ফলাফল পেয়েছি।

2
যোগ সম্পাদিত
মতামত: 1

2 উত্তর

সেশনগুলি ডেটাস্টোরতে চলতে থাকে যতক্ষণ পর্যন্ত আপনি dev_appserver পুনরায় আরম্ভ করবেন ততক্ষণ আপনি আপনার সেশনগুলি থাকা উচিত। চেক করুন যে আপনি প্রতিটি রিস্টার্টে ডেটাস্টোর সাফ করছেন না।

0
যোগ
তাই আপনি বলছেন যে যতদিন আমি স্টার্টআপের সময় ডেটাস্টোরটি মুছে ফেলার জন্য আমার পথ থেকে বেরিয়ে যাব না, সেশনগুলিও ডিভি মোডে চলতে থাকা উচিত? বর্তমানে এটি স্থাপন করার সময় এটি কাজ করে, কিন্তু আমি নিশ্চিত করেছি যে ডেভেলপমেন্ট মোডের অধিবেশন ডটসটোর কাছে লেখা হচ্ছে না এবং আমি এটি পরিস্কার করছি না। এক জিনিস লক্ষ্য করুন, আমি অন্য কোনও তথ্যের জন্য ড্যাটাস্টোর ব্যবহার করছি না, আমি Google ক্লাউড এসকিউএল ব্যবহার করছি, এবং আমি "স্থানীয় এইচআরডি সমর্থন সমর্থিত" এবং "ড্যাটাউটোঅর JDO/JPA ব্যবহার করে ডেটাটোর অ্যাক্সেস" এ্যাপ ইঞ্জিন সেটিংসে অনির্বাচিত ।
যোগ লেখক tangent, উৎস

আপনার যদি cookie_args.domain মান সেট থাকে (যেমন ওয়েবপয়েন্ট 2 সেশন ), তাহলে এটি আপনার ডেভেলপমেন্ট সার্ভারে কাজ করবে না। যে, যদি ডোমেনটি .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
যোগ