Skip to content

发布

本地运行

注册Task

main命令行入口和上述实现的Task类注册到命名空间中。

编辑pyproject.toml文件,增加poetry插件如下内容:

[tool.poetry.plugins.console_scripts]
automotive_data_etl = "automotive_data_etl.cmdline:main"

[tool.poetry.plugins."etl_tasks"]
automotive_task = "automotive_data_etl.tasks.automotive_task.task:AutomotiveDataTask"

这么做的目的是将AutomotiveDataTask注册到entry_points中, 然后在程序中使用importlib.metadata 根据名称空间查找。而 stevedore 则是封装了查找的复杂逻辑,让使用插件更简单。

将项目以可编辑模式安装到当前环境:

poetry install

可以在 Python Console 下查看注册插件信息:

>>> from importlib.metadata import entry_points

>>> entry_points(group='etl_tasks')

[EntryPoint(name='automotive_task', value='automotive_data_etl.tasks.automotive_task.task:AutomotiveDataTask', group='etl_tasks')]

将本地项目以可编辑方式安装到当前 Python 环境:

pip install -e .

运行Task

然后通过命令行的方式运行Task,通过命令行参数的方式更新输入输出路径:

automotive_data_etl \
  --env=development \
  --task=automotive_task \
  --input=tmp/input/car_price.csv \
  --output=tmp/output/