python - 存在哪些模板系统适合编写服务创建配方

标签 python templates recipe

我需要构建一个批量服务创建守护进程,该守护进程可以提供一个数据表,然后开始创建一组预先固定的服务。然而,服务的类型可能多种多样,并且后面的步骤可能需要前面步骤的输出。

这似乎是我需要用某种领域特定语言来实现的,它允许我定义模板配方。然后可以通过模板引擎传递该数据,并在最终运行之前从数据表中进行替换。

重用现有的语言基础设施以允许更复杂的配方使用流程控制并定义一组受限制的基本操作是有意义的。不过,我希望简单的配方不需要更改语言知识,因为最终用户可能没有软件经验。

我会设想一个简单的模板配方,看起来像这样:

# Create a service from NodeA to NodeC via NodeB
# Parameters are:
#   node a id, node a port, node b id, node c id, node c port, comment
node_a = node_a_type($1)
conn_a = node_a.create_connection($2, $7)
node_b = node_b_type($3)
conn_b = node_b.create_connection(conn_a.output_port, $7)
node_c = node_c_type($4)
conn_c = node_c.terminate_connection(conn_b.output_port, $5, $7)

我建议使用 python 作为基础语言,因为我很熟悉它。然而,Python wiki 建议了许多不同的选项 ( http://wiki.python.org/moin/Templating ),其中大多数都是针对 HTML/XML 模板解决方案。深入了解不同系统的优缺点将不胜感激。

最佳答案

我认为MakoJinja2两者都可以满足要求。

  • 两者都不是 html/xml 模板,而是基于文本。
  • 两者都很受欢迎并且有据可查。
  • Mako 具有更多 Python 语法,而 Jinja 的一大优势是它支持沙箱,这可能对您有用。

关于python - 存在哪些模板系统适合编写服务创建配方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5802897/

相关文章:

c++ - 为什么有时使用基本类型作为基类编译?

list - prolog 中的配方函数

ruby - 如何将 linux 命令输出到 chef 属性

mysql - 使用 Ruby/Chef Recipe for Vagrant 导入 Mysql 数据库

python - 如何从 SqlAlchemy+pg8000 使用 SSL 连接到 Postgresql?

c++ - 如何在此回调中用具有编译时类型检查的内容替换 void 指针?

`n//1` 的 Python 回合

c++ - 所有的模板实例都是在编译时创建的吗?

python - 使用 pandas 的 Silhouette_score 的正确数据格式

python - 将负数、NaN 和 0 替换为下一个和上一个正数的平均值