泽纳顿客户端库

zenaton的Python项目详细描述


浏览文档
网站 · python中的示例 · python教程

用于python的zenaton库

zenaton帮助开发人员在不管理排队系统的情况下轻松运行、监视和编排工作人员的后台作业。除此之外,监视仪表板还会显示实时任务执行情况,并帮助您处理错误。

用于python的zenaton库允许您使用zenaton平台编写和启动任务,并将工作流作为代码编写。您可以在Zenaton注册一个帐户,然后在Python中完成教程

要求

这个包已经用python 3.5进行了测试。

python文档

您可以在Zenaton的网站上找到所有详细信息。 <详情>

目录 <详细内容>

开始

安装

安装Zenaton代理

要安装Zenaton代理,请运行以下命令:

curl https://install.zenaton.com/ | sh

然后,你需要你的代理来监听你的申请。 为此,您需要应用程序IDAPI标记。 您可以在您的Zenaton账户上找到这两个账户。

zenaton listen --app_id=YourApplicationId --api_token=YourApiToken --app_env=YourApplicationEnv --boot=boot.py

安装库

要将库的最新版本添加到项目中,请运行以下命令:

pipinstallzenaton

框架集成

如果您使用的是django,请认罪请参阅我们的专用文档开始:

快速启动

客户端初始化

首先,需要初始化客户端。为此,您需要应用程序IDAPI标记。 您可以在您的Zenaton账户上找到这两个账户。

然后,初始化Zenaton客户端:

fromzenaton.clientimportClientClient(your_app_id,your_api_token,your_app_env)

执行后台作业

Zenaton的后台工作是一个实现Zenaton.abstracts.task.task接口的类。

让我们从实现第一个任务开始打印一些内容,并返回一个值:

importrandomfromzenaton.abstracts.taskimportTaskfromzenaton.traits.zenatonableimportZenatonableclassHelloWorldTask(Task,Zenatonable):defhandle(self):print('Hello World\n')returnrandom.randint(0,1)

现在,如果要将此任务作为后台作业运行,则需要执行以下操作:

HelloWorldTask().dispatch()

这就是你要开始的一切。有了这个,你可以运行许多后台作业。 然而,泽纳顿真正的力量是能够安排这些工作。下一节将向您介绍作业编排。

编排后台作业

作业编排允许您以简单的方式编写复杂的业务工作流。 您可以根据上一个作业的结果有条件地顺序、并行地执行作业, 您甚至可以使用循环来重复某些任务。

我们写了一些关于作业编排的用例,您可以查看这些文章 以了解人们如何使用作业编排。

使用工作流

Zenaton中的工作流是实现Zenaton.abstracts.workflow.workflow接口的类。

我们将实现一个非常简单的工作流:

首先,它将执行helloworld任务。 第一个任务的结果将用于使用if语句生成条件。 当返回值大于0时,我们将执行第二个名为finaltask的任务。 否则,我们不会做任何其他事情。

要记住的一件重要事情是,工作流实现必须是等幂的。 您可以在我们的文档中了解更多信息

实现如下:

fromtasks.hello_world_taskimportHelloWorldTaskfromtasks.final_taskimportFinalTaskfromzenaton.abstracts.workflowimportWorkflowfromzenaton.traits.zenatonableimportZenatonableclassMyFirstWorkflow(Workflow,Zenatonable):defhandle(self):n=HelloWorldTask().execute()ifn>0:FinalTask().execute()

现在您的工作流已经实现,您可以通过调用dispatch方法来执行它:

MyFirstWorkflow().dispatch()

如果您真的想运行此示例,则需要实现finaltask任务。

工作流中还有许多可用的功能,以便正确地完成编排。你可以学到更多 在我们的文档中

获取帮助

需要帮助吗?请通过在Zenaton上聊天随时与我们联系。

找到虫子了吗?您可以打开agithub问题

理论示例

python示例报告

现实生活中的例子

在寒冷天气3天后触发电子邮件中等文章源代码

贡献

在github上,欢迎使用bug报告和pull请求。本项目旨在成为一个安全、受欢迎的协作空间,参与者应遵守//contributor convention.org" rel="nofollow">贡献者契约行为准则。

测试

要在发送拉取请求之前测试更改,请首先安装测试要求:

pip install '.[test]'

然后运行pytest:

curl https://install.zenaton.com/ | sh
0

许可证

根据麻省理工学院许可证的条款,该软件包以开源的形式提供。

行为准则

在Zenaton Python项目的代码库、问题跟踪程序、聊天室和邮件列表中进行交互的每个人都应该遵循行为准则。

更改日志

[未发布]

添加

更改

已弃用

删除

已修复

安全性

[0.4.0]-2019-08-26

添加

  • 在分派工作流和任务、向工作流发送事件以及 暂停/恢复/终止工作流。

  • 增加了日程安排:日程安排(cron)

[0.3.4]-2019-07-01

添加

  • 在连续集成流中运行测试。
  • 当此库在Zenaton代理中运行时,不需要凭据,除非发送 子工作。

[0.3.3]-2019-06-25

固定

  • 修复client.py中阻止正确执行版本的拼写错误

[0.3.2]-2019-06-21

固定

  • 在等待任务中调用"day of_month"(每个月的第二天)现在将等待具有请求的日期编号的第二天,即使这意味着等待下个月。(即呼叫wait()。2月31日的第二天将等待3月31日)
  • 修复了某些边缘情况下的等待任务行为
  • 发送请求前对http参数进行编码

添加

  • 发送事件时添加了事件数据属性。

[0.3.1]-2019-04-26

固定

  • 修复了manifest.in文件中不包含setup.py所需的文件

[0.3.0]-2019-03-25

添加

  • 对任务调用dispatch现在允许异步处理任务

已修复

修复了某些边缘情况下的等待任务行为 在发送请求之前对http参数进行编码

[0.2.5]-2018/10/17

对象序列化(包括循环结构)

[0.2.4]-2018年9月26日

通过持续时间和时间戳类增强

[0.2.3]-2018年9月21日

小的增强(包括workflow find()方法)

[0.2.2]-2018/09/19

新版方案管理

[0.2.1]-2018/09/17

重新组织的模块

[0.2.0]-2018/09/14

完全重写包

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

推荐PyPI第三方库


热门话题
在数据库中存储密码的java加密方法   java正则表达式否定整个正则表达式   java为什么要得到这个Hashmap输出?   看不到玻璃鱼爪哇SE 6   类对象包装器中的Java基本数据字段   java从文本文件中读取整数并存储到单独的变量中?(扫描仪)   优化大型Java数据阵列的处理和管理   如何使用Java XML包装类创建对象   java为ExecutorService invokeAll()创建包装器   java如何在Android Studio 1.0.0中设置Facebook SDK?获取SDK位置未找到错误   java在尝试从线程启动动画时调用了FromErrorThreadException   java根据哈希确认文件内容   通过java在neo4j中获取索引值相同的所有节点?   java为什么我的Validare邮政编码(布尔)程序返回false?   java会话自动从servlet/jsp生成,尽管存在以下条件:<%@page session=“false”%>   创建新LANsocket时拒绝java连接   java如何多线程更新由sql代码更新的数据库?   安卓 Java使用类作为集合来添加项   安卓为什么我的清单文件不声明java包?