Cowait是一个使用异步Python创建容器化工作流的框架。
cowait的Python项目详细描述
考威特
Cowait是一个使用异步Python创建容器化分布式应用程序的框架。容器化函数,称为Tasks,可以在Docker或远程Kubernetes集群中本地运行。其目的是构建一种新颖的工作流引擎,它提供最大的灵活性,同时也需要最少的设置和配置。由于对任务可能是什么的松散定义,以及与Docker&Kubernetes的集成,Cowait可用于轻松构建多种类型的分布式应用程序。在
请在https://docs.cowait.io/查看文档
通知
Cowait仍处于相当早期的开发阶段。我们邀请您尝试一下,并乐意接受您的反馈和贡献,但请注意,可能会引入破坏性的API更改。在
入门
要求
- 码头工人
- python 3.6+
安装
$ pip install cowait
任务开发
第一个任务
- 编写任务。
任务可以写成cowait.Task
的修饰函数或子类。最简单的方法是编写修饰函数:
- 构建任务映像
当前目录中的所有文件都绑定到docker映像中。在
在与hello.py
相同的文件夹中,运行:
$ cowait build
- 在本地运行
要运行任务,请将模块导入名称的名称传递给cowait run
。因为我们的任务代码位于hello.py
,所以模块名将是hello
。在与hello.py
相同的文件夹中,运行:
$ cowait run hello
注释
- ^提供给
cowait run
的{}是python模块名。这个模块应该正好包含one任务类。模块可以是单个python文件或带有 __init__.py
文件的子目录。在 - 从CLI运行时,任务的实际函数/类名并不重要,只有在从python导入和执行任务时。在
子任务、参数和返回值
任务可以通过使用await
关键字异步导入和调用来执行子任务。子任务接受命名参数并返回结果,非常类似于常规函数。在
假设我们有一个Square
任务,它是一个整数的平方。在
# square.pyfromcowaitimporttask@taskasyncdefSquare(number:int)->int:returnnumber**2
我们可以将其导入另一个任务并执行它:
# main.pyfromcowaitimporttaskfromsquareimportSquare@taskasyncdefMainTask():value=22squared=awaitSquare(number=22)print(f'{value} squared is {squared}!')
任务上下文
任务上下文是包含cowait.yml
配置文件的目录。此目录将充当项目的根目录,并且在构建步骤期间,此文件夹中的所有内容都将复制到生成的docker映像中。如果尚未创建cowait.yml
文件,则将使用当前工作目录(执行cowait build
时)。在
**任务上下文示例**
/var/stuff/my_cowait_project
src/
library.py
cowait.yml
requirements.txt
task1.py
task2.py
在本例中,/var/stuff/my_cowait_project
将是上下文目录。在
推送任务图像
在Kubernetes集群上运行任务之前,必须将它们推送到可以从集群访问的docker注册表。为此,必须在上下文配置文件中定义一个正确的映像名。在
version:1cowait:image:docker.io/username/cowait-task
{16>配置完映像后,您可以使用完整的映像名^:
$ cowait push
群集部署
要求
- 已配置kubernetes群集上下文。在
- 可从群集访问Docker注册表。在
首先,确保图像已被推送到docker注册表。在
$ cowait push
Kubernetes配置
在kubernetes集群上运行任务之前,您需要一个具有创建/列出pod权限的服务帐户。k8setup.yml
中提供了一个示例配置,允许默认服务帐户拥有的任何pod创建、列出和销毁其他pod。在
有关在Kuberne上运行的详细信息tes,见documentation。在
正在运行任务
要在远程集群上运行任务,请使用--cluster
选项将集群名称传递给cowait run
。在
Cowait附带了一个名为kubernetes
的预定义集群,它总是指默认配置的集群(由$ kubectl config current-context
返回的集群)。在
$ cowait run docker.io/username/cowait-task --cluster kubernetes
发展
要求
- 码头工人
- python 3.6+
- pipenv/virtualenv(可选)
安装
- 克隆存储库
$ python3 -m pip install -e .
对cowait/
目录的更改需要重建基础映像。您可以使用存储库根目录中提供的帮助程序脚本执行此操作:
$ ./build.sh
注意:要使更改生效,必须使用cowait build
重新生成任务。在
- 项目
标签: