Django Lambda с микросервисами, разбиение проекта Django на функции Lambda

Я только что начал реализовывать бессерверную архитектуру с использованием Django и AWS lambda, и сейчас она работает отлично. Мой проект состоит из двух приложений user_onboarding и user_training и имеет следующую структуру :

MainApp
- user_onboarding
  - models.py
  - urls.py
  - views.py
- user_training
  - models.py
  - urls.py
  - views.py
- MainApp
  - urls.py
  - settings.py
  - wsgi.py
- manage.py
- lambda_handler.py
- serverless.yml

Модель/модели разделяются между обоими приложениями, содержат отношения один ко многим, Foreign Key и прекрасно работают на Lambda. теперь я хочу разделить приложения на две разные лямбда-функции. т.е. user_onboarding в отдельной лямбда-функции и user_training в отдельной лямбда-функции. Какой подход будет лучшим для достижения этой цели?

Мои вопросы, пока я думал об этом:

  1. how my models are going to be shared with lambda functions? does lambda layers is the best option?

i) Я попробовал сделать слои моделей обоих приложений, как в этой структуре:

 ```
   > python/user_onboarding_models/models.py
   > python/user_training_models/models.py
 ```

и когда я попытался импортировать модели, чтобы я мог использовать для запроса в ORM, как это : from user_onboarding_models.models import *. Это дает мне ошибку - RuntimeError: Класс модели user_onboarding_models.models.xxx не объявляет явную метку app_label и не находится в приложении в INSTALLED_APPS Так можем ли мы разделять наши модели таким образом в слоях? Есть ли какой-нибудь другой способ сделать это?

  1. In this structure, where will be my settings.py reside? this too in layers? or it will be in both the lambda functions?

  2. How am I going to handle the migrations if I store models.py in layers?

  3. how to achieve database connection for both lambda function as the project is now split?

Мой главный девиз - я хочу использовать DRF для создания API и для этого я буду использовать сериализаторы с моделями, поэтому я очень хочу, чтобы модели были доступны.

Пожалуйста, дайте мне знать, если кому-то нужно больше деталей, чтобы помочь понять мою проблему.

Заранее спасибо!!!

Вернуться на верх