朋友们,在五月假期的前夕,我们决定不使用复杂的技术文章来轰炸您,因此我们发现了非常有趣的内容,而且最重要的是易于阅读的材料,我们很高兴与您分享这些翻译的内容。 我们希望这些材料与课程
“ Python中的Web开发人员”的发布相吻合。
原始文件可以在
这里找到。

三年前收购
Vivendi dailymotion是我们组织的转折点。 这使我们可以重新思考工作的载体,从头到尾重新思考我们自己的工作。 我们利用这次机会总体上评估了
Dailymotion ,重新考虑了我们的基础架构,更重要的是,重新思考了产品的体系结构。
最后,自我分析证实了我们已经知道的一切:我们想在地理上分布我们的平台,并开发
API ,移动和电视应用程序。 这标志着放弃了当前的整体结构,并采用了面向API的方法。 本文介绍了我们遵循的路径。
标准和验证概念我们通过定义API标准开始了该项目,该标准最终缩小为四点:
- 提供良好的DX (开发人员经验),易于使用和实施;
- 培养一个坚实而不断发展的社区 ,使社区能够聚集和利用广泛的技术;
- 就软件体系结构而言,其行为类似于网关 ,旨在简化我们的系统集成从整体到SOA(面向服务的体系结构)的转换;
- 能够实施API管理工具,即API管理,文档和数据访问。
接下来,我们选择了几种API模型并测试了一些概念以了解其适用性:
- 带有Swagger的Rest API
- 带有石墨烯的GraphQL API
- Falcor API

经过严格的测试,与其他模型相比,我们发现
GraphQL及其Graphene实现最符合我们的标准。 这使我们的前端开发人员可以更轻松地使用我们的API,同时简化其在客户端应用程序(例如React JS和Apollo Client)中的使用。 在我们的体系结构中,GraphQL作为模式网关也更简单,更高效。 最后,我们最终决定继续使用GraphQL和Graphene。
生产方式经过六个月的紧张开发,2017年4月,我们使用API投入生产。 到夏天,我们
将所有
Dailymotion产品(网络,移动和电视)都切换到了GraphQL API。

当我们三年前选择GraphQL时,它仍处于beta版本,没有达到今天的流行程度。 我们是该领域的第一批主要参与者,这使我们的内部重建更加令人愉快。
塔特弗莱特的出生在使用Graphene超过六个月之后的2018年前几个月,我们决定更进一步,编写自己的GraphQL引擎。 这使我们可以实现石墨烯无法满足的一些要求。 我们已经为自己的引擎制定了标准。 他必须:
- 为Python开发人员提供最佳思维的DX ;
- 使用SDL (架构定义语言);
- 使用asyncio作为独立的执行引擎;
经过将近一年的开发和数周的基础架构测试(平均每天处理超过1亿个呼叫),我们很荣幸为GraphQL社区提供我们自己的开源Tartiflette引擎。
Tartiflette DNATartiflette是基于
Python 3.6+构建的GraphQL Server实现
GraphQL模式
是使用新的
模式定义语言(SDL)描述的 ;
绩效是我们工作的关键要素,这体现在
Tartiflette中 ;
建
基于Python的Zen 。 不太复杂。
你好世界在tartiflette
import asyncio from tartiflette import Engine, Resolver @Resolver("Query.hello") async def resolver_hello(parent, args, ctx, info): return "hello " + args["name"] async def run(): ttftt = Engine(""" type Query { hello(name: String): String } """) result = await ttftt.execute( query='query { hello(name: "Chuck") }' ) print(result)
您可以在
tartiflette.io的手册中找到有关新功能的信息。
Tartiflette接下来会发生什么?开源Tartiflette只是第一步。 以下是Tartiflette未来发展的一些想法和计划:
- 为用户和社区提供的“抛光”文档 ;
- 提供更多的例子和扩展用例来激发您尝试Tartiflette的功能;
- 生产率提高 ,主要是在执行引擎级别。
我们也需要您!
您几乎可以将我们的项目用于任何目的,并帮助我们开发Tartiflette! 请检查它的耐用性,不要犹豫,查找代码中的错误或不一致之处,并保持反馈意见以改进产品。 我们坚信,与社区密切合作,Tartiflette将会变得更好。
如何为该项目做出贡献?GitHub上的Tartiflette ;
阅读
tartiflette.io上的文档;
向
Slack发送反馈和建议;
在
Twitter上加入社区。