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 в отдельной лямбда-функции. Какой подход будет лучшим для достижения этой цели?
Мои вопросы, пока я думал об этом:
- 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 Так можем ли мы разделять наши модели таким образом в слоях? Есть ли какой-нибудь другой способ сделать это?
In this structure, where will be my settings.py reside? this too in layers? or it will be in both the lambda functions?
How am I going to handle the migrations if I store models.py in layers?
how to achieve database connection for both lambda function as the project is now split?
Мой главный девиз - я хочу использовать DRF для создания API и для этого я буду использовать сериализаторы с моделями, поэтому я очень хочу, чтобы модели были доступны.
Пожалуйста, дайте мне знать, если кому-то нужно больше деталей, чтобы помочь понять мою проблему.
Заранее спасибо!!!
Вернуться на верх