У меня есть приложение Elixir Umbrella с Phoenix, Absinthe (graphQL). В AppWeb
мой AppWeb.Router
направляет запросы, обрабатывая /graphql
с Absinthe.Plug
и используя MyApp.Schema
.
В AppWeb.Schema
я импортирую объекты из множества разных схем в разные приложения OTP, используя import_types
. Я буду использовать Users
в качестве примера.
В Users.Schema
есть объекты и поля, где в конечном итоге будет resolve &Resolvers.resolve_x/2
Я знаю, что Phoenix запускает новый процесс при каждом запросе, в hexdocs Absinthe.Schema
указано, что В Absinthe 1.5 схемы создаются с использованием того же процесса, которым выполняются запросы. Означает ли это, что каждый новый процесс, созданный запрос phoenix взаимодействует с одним процессом schema (AppWeb.Schema
)? Если да, то не создаст ли это узкое место? Если нет, то разве это не много кода (все преобразователи и соответствующие функции из всех приложений OTP), которые нужно перенести в новый процесс схемы, порождаемый каждый раз?