具有Argo工作流程的Jinja模板

时间:2020-09-30 21:27:34

标签: jinja2 argo-workflows

我有一个与Argo Workflow和JINJA模板有关的查询:

我知道Argo工作流程支持JINJA模板,用于诸如{{...}}, 但是Argo工作流程是否还支持JINJA模板控制结构,例如:{%...%} ........?

我在一个用例中挣扎,我需要在“单一” WorkflowTemplate中添加以下语句

import dash
import dash_table
import pandas as pd
from jupyter_dash import JupyterDash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output


# data
#df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/solar.csv')

df = pd.DataFrame(np.array([["good", "good"], ["bad", "perfect"], ["perfect", "good"], ["perfect", "good"]]), columns=['after', 'before'])
a = np.unique(df.to_numpy())
df = pd.crosstab(df['before'], df['after']).reindex(columns=a, index=a, fill_value=0)#.reset_index()

#df = df.reset_index(level=['after', 'before'])
iname = df.index.name
cname = df.columns.name
df = df.reset_index()
df.rename(columns={df.columns[0]: iname + ' / ' + cname}, inplace=True)

app = JupyterDash(__name__)

app.layout = dash_table.DataTable(
    id='table',
    columns=[{"name": i, "id": i} for i in df.columns],
    data=df.to_dict('records'),
)

if __name__ == '__main__':
    app.run_server(debug=True)

app.run_server(mode='inline', port = 8077, dev_tools_ui=True,
          dev_tools_hot_reload =True, threaded=True)

1 个答案:

答案 0 :(得分:0)

Argo工作流程does not currently support Jinja control structures

如果您可以进行少量代码重复,那么一种解决方法是使用conditionals来实现gpu == 1gpu != 1分支(以不同的步骤进行)。

您也可以使用podSpecPatch。它是要应用到pod规范的补丁程序的JSON字符串表示形式。对于该JSON中的简单变体,您可以使用Jinja字符串模板。对于更复杂的变异,您可以一步一步生成JSON,然后将其用作输出参数。