Python命令行工具,使气流项目的部署更容易。

afctl的Python项目详细描述


afctl公司

编写所建议的CLI工具的目的是使气流项目的创建和部署更快、更顺利。 到目前为止,还没有工具可以让用户为气流创建样板代码结构 并使项目的开发+部署无缝进行。在

要求

  • Python 3.5+
  • 码头工人

入门

1。安装

创建一个新的python virtualenv。您可以使用以下命令。

python3 -m venv <name>

激活您的virtualenv

^{pr2}$
pip3 install afctl

2。初始化新的afctl项目。

项目将在当前工作目录中创建。与此同时,具有相同名称的配置文件是 在/home/.afctl_configs目录中生成。在

afctl init <name of the project>

例如

afctl init project_demo
  • 将生成以下目录结构
.
├── deployments
│   └── project_demo-docker-compose.yml
├── migrations
├── plugins
├── project_demo
│   ├── commons
│   └── dags
├── requirements.txt
└── tests

如果您已经有一个git存储库,并希望将其转换为afctl项目。 运行以下命令:-

afctl init .

3。在项目中添加新模块。

afctl generate module -n <name of the module>

将生成以下目录结构:

afctl generate module -n first_module
afctl generate module -n second_module

.
├── deployments
│   └── project_demo-docker-compose.yml
├── migrations
├── plugins
├── project_demo
│   ├── commons
│   └── dags
│       ├── first_module
│       └── second_module
├── requirements.txt
└── tests
    ├── first_module
    └── second_module

4。生成dag

afctl generate dag -n <name of dag> -m <name of module>

将生成以下目录结构:

afctl generate dag -n new -m first_module

.
├── deployments
│   └── project_demo-docker-compose.yml
├── migrations
├── plugins
├── project_demo
│   ├── commons
│   └── dags
│       ├── first_module
│       │   └── new_dag.py
│       └── second_module
├── requirements.txt
└── tests
    ├── first_module
    └── second_module

dag文件如下所示:

fromairflowimportDAGfromdatetimeimportdatetime,timedeltadefault_args={'owner':'project_demo',# 'depends_on_past': ,# 'start_date': ,# 'email': ,# 'email_on_failure': ,# 'email_on_retry': ,# 'retries': 0}dag=DAG(dag_id='new',default_args=default_args,schedule_interval='@once')

5。在本地部署项目

您可以在requirements.txt中添加dag所需的python包。他们会自动得到 安装。在

  • 要部署项目,请运行以下命令(确保docker正在运行):
afctl deploy local

如果不想查看日志,可以运行

afctl deploy local -d

这将以分离模式运行它,并且不会在控制台上打印日志。在

  • 您可以在localhost:8080的浏览器上访问airflow Web服务器

6。生产部署项目

  • 这里我们将把我们的项目部署到Qubole。在注册美国qubole.com. 在
  • 添加git源和访问令牌(如果希望将项目保留为私有repo 在Github上)。See how
  • 项目完成后将其推送到Github。在
  • 部署到Qubole将需要添加部署配置。在
afctl config add -d qubole -n <name of deployment> -e <env> -c <cluster-label> -t <auth-token>

此命令将修改配置文件。您可以使用以下命令查看配置文件:

afctl config show

例如-

afctl config add -d qubole -n demo -e https://api.qubole.com -c airflow_1102 -t khd34djs3
  • 要部署,请运行以下命令
afctl deploy qubole -n <name>

下面的视频还包含使用afctl部署project的所有步骤-

https://www.youtube.com/watch?v=A4rcZDGtJME&feature=youtu.be

管理配置

用于部署的配置文件包含以下信息。在

global:-airflow_version:-git:--origin:--access-token:deployment:-qubole:--local:---compose:

  • airflow_version可以在初始化项目时添加到项目中。在
afctl init <name> -v <version>
  • 可以使用以下命令添加/更新全局配置(airflow_version、origin、access token):
^{pr21}$

使用

现在支持的命令有

  • 初始化
  • 配置
  • 部署
  • 列表
  • 生成

要了解更多信息,请运行

afctl <command> -h

注意

还没有移植到窗户上。在

学分

Docker编写文件:https://github.com/puckel/docker-airflow

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
ArrayList中实体对象上的JAVA泛型   带Redis的爪哇芹菜vs单用Redis   java在设备面向横向时隐藏标题栏/通知栏   java JXTreeTable:如何使用ComponentProvider为一列设置渲染器   java创建异常的成本与记录异常的成本相比   java在方法参数中使用setter传递新对象   java在一个类中的方法与另一个类中的方法交互时遇到问题   java如何迭代2个大小相等的ArrayList   Java getDesktop()。open在Windows中工作,但在Mac中不工作   从tomcat切换到jetty后的java“无法启动嵌入式容器”,Spring引导   java如何使用void方法   java如何在解组时在JAXB的ValidationEventHandler中获取节点值?   如何使用Akka Java API创建不响应的TCP接收器   JavaScriptjQuery在java中将记录上传到数据库时的进度条   如何在重新绘制时在java小程序中显示上一个图像