我有一组 Django 微服务,每个微服务都公开 GraphQL API。目前,我正在使用 Apollo Server 和 Apollo Federation 将所有子图组合成一个超级图。但是,我遇到了一些限制:
Apollo 的一些高级功能不是免费的。
rover
命令(用于从子图创建超图)需要互联网连接,这对于我的设置来说并不理想。
我希望使用 Python(使用 Flask、Django 或类似工具)构建一个自定义解决方案,该解决方案既可以充当 API 网关,也可以充当 GraphQL 联合服务。目标是聚合所有子图并生成超级图,而不依赖 Apollo 的专有工具。
是否有人实施了类似的解决方案,或者对实现此目标的框架、库或策略有建议?任何关于在 Python 中构建此网关和处理 GraphQL 联合的建议将不胜感激。
我正在寻找用 Python 构建自定义解决方案(使用 Flask、Django 或类似工具)
现在有一些替代的 GraphQL 网关(免费),请检查我所做的审计,以衡量它们与 Apollo Federation 规范的兼容性:https://the-guild.dev/graphql/hive/federation-gateway-audit
我想说,由于 Apollo Federation 规范的复杂性,很难构建自己的网关,而且实际上有 0 个库可以帮助您构建一个。当我说它很复杂时,我是认真的,只需看看我为审计创建的测试(它是开源的)。
您可能会使用 Apollo 的查询规划器(JavaScript,但很快也会在 Rust 中)生成一个查询计划,您将在 Python 中执行该查询计划,但是当您有这么多具有良好插件系统的选项时,值得付出努力吗?