Я конвертирую приложение App Engine для приложений python для использования модулей, как описано в этой статье, https://cloud.google.com/appengine/docs/python/modules/. Я хотел бы использовать собственный обработчик как базовый класс в каждом из моих модулей, чтобы добавить некоторые общие функции. Нужно ли мне повторять код пользовательского обработчика в каждом модуле или есть способ импортировать этот класс?Google App Engine Python - использование одного и того же базового обработчика в разных модулях
Например, я хотел бы свою архитектуру, чтобы выглядеть следующим образом:
MyProject
├── common
│ ├── my_handler.py
├── module1
│ │ ├── module1.yaml
│ │ ├── main.py
├── module2
│ │ ├── module2.yaml
│ │ ├── main.py
/common/my_handler.py не является частью модуля приложения двигателя и выглядит следующим образом:
import webapp2
class BaseHandler(webapp2.RequestHandler):
"""
BaseHandler for all requests
"""
pass
А потом в /module1/main.py файл, я хотел бы сделать что-то вроде этого:
import webapp2
from common.my_handler import BaseHandler
class module1Handler(BaseHandler):
def get(self):
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write('Hello, this is module 1!')
app = webapp2.WSGIApplication(
[('/', module1Handler),
],
debug=True)
Это не будет работа, сервер выдает ошибку, поскольку он не может найти common.my_handler.py:
ImportError: No module named common.my_handler
модулей, кажется, песочницы. Можно ли импортировать /common/my_handler.py из /module1/main.py?