سؤال

كيف يمكنني العمل مع المجال الفرعي في google app engine (الثعبان).

أريد الحصول على أول جزء المجال واتخاذ بعض الإجراءات (معالج).

على سبيل المثال:
المنتج.example.com -> إرسال إلى المنتجات معالج
المستخدم.example.com -> إرسالها إلى المستخدمين معالج

في الواقع, استخدام المسار الظاهري لدي هذا الكود:

  application = webapp.WSGIApplication(
    [('/', IndexHandler),
     ('/product/(.*)', ProductHandler),
     ('/user/(.*)', UserHandler)
  ]
هل كانت مفيدة؟

المحلول

WSGIApplication غير قادر على التوجيه على أساس المجال.بدلا من ذلك, تحتاج إلى إنشاء تطبيق منفصل لكل فرعي مثل هذا:

applications = {
  'product.example.com': webapp.WSGIApplication([
    ('/', IndexHandler),
    ('/(.*)', ProductHandler)]),
  'user.example.com': webapp.WSGIApplication([
    ('/', IndexHandler),
    ('/(.*)', UserHandler)]),
}

def main():
  run_wsgi_app(applications[os.environ['HTTP_HOST']])

if __name__ == '__main__':
  main()

بالتناوب, هل يمكن الكتابة الخاصة بك WSGIApplication فرعية أن يعرف كيفية التعامل مع العديد من المضيفين.

نصائح أخرى

أنا أحب فكرة من نيك ولكن لدي قضية مختلفة قليلا.أردت أن مباراة واحدة محددة فرعي التعامل معها مختلفة بعض الشيء ، ولكن جميع المجالات الفرعية ينبغي التعامل مع نفسه.حتى هنا هو بلدي على سبيل المثال.

import os

def main():
   if (os.environ['HTTP_HOST'] == "sub.example.com"):
      application = webapp.WSGIApplication([('/(.*)', OtherMainHandler)], debug=True)
   else:
      application = webapp.WSGIApplication([('/', MainHandler),], debug=True)

   run_wsgi_app(application)


if __name__ == '__main__':
   main()
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top