用python编写的积云任务处理程序库

cumulus-message-adapter-python的Python项目详细描述


#积云消息适配器python

[![Circleci](https://circleci.com/gh/nasa/cumulus-message-adapter-python.svg?style=svg)(https://circleci.com/gh/nasa/cumulus消息适配器python)
[![PYPI版本](https://badge.fury.io/py/cumulus消息适配器python.svg)(https://badge.fury.io/py/cumulus消息适配器python)





积云是基于云的数据接收、存档、分发和管理
美国宇航局未来地球科学数据流的原型。

阅读[积云文档](https://cumulus nasa.github.io/)



cumulus消息适配器是一个库,它将
cumulus协议中的传入消息调整为cumulus任务更容易使用的格式,调用
任务,然后将其响应调整回cumulus消息协议
以发送到下一个任务。

安装

```
$pip install git+https://github.com/cumulus nasa/cumulus消息适配器python.git
```

逻辑函数。

handler函数是一个标准的lambda handler函数,它接受两个
参数(由aws指定):"event"和"context"。

它应该有两个参数:`event`和`context`.

resolved

"context"参数是aws传递的标准lambda上下文。


业务逻辑函数的返回值将放在生成的积云消息的
"payload"中。

sk,
并应做好记录。任务应该仔细考虑它们的输入
和返回值,因为中断更改可能会对整个工作流中的任务
产生级联影响。配置更改的影响稍小,但必须与使用该任务的用户进行通信。


python的积云消息适配器提供了一种方法:
"运行积云任务"。它有四个参数:

*`task_function`-包含业务逻辑的函数(如上所述)
*`cumulus_message`-lambda传递的事件,应该是cumulus
message
*`context`-lambda context
*`schemas`-可选:一个具有"input"、"config"和"output"属性的ct。每个应该是一个字符串,设置为相应json模式文件的文件路径。此dict的所有三个属性都是可选的。如果ommitted,消息适配器将在`/<;task_root>;/schemas/<;schema_type>;.json`中查找,如果未在其中找到,则将被忽略。
*`taskargs`-可选。"task_u函数"的附加关键字参数

example


使用此包的"run戋cumulus戋task"函数作为另一个函数的包装的简单示例:

``py
来自run戋cumulus戋task import run戋cumulus戋task的简单任务

r/>def task(event,context):
return event

提供给aws lambda的处理程序使用这个库的任务只是标准的aws lambda任务。有关创建发布包的信息[此处](https://docs.aws.amazon.com/lambda/latest/dg/deployment-package-v2.html)是可用的。

##积云部署中的用法

在部署过程中,积云将自动获取[积云消息适配器](https://github.com/cumulus-nasa/cumulus-message-adapter)并将其注入编译后的代码中,然后创建一个要部署到lambda的zip文件。

此存储库的示例文件夹](./example)将在lambdas.yml中配置如下:

``yaml
python示例:
handler:task.handler
timeout:300
source:'./example'
usemessageadapter:true
runtime:python2.7
memory:256
```

developtment

以及积云的日志格式。方法用于记录错误、致命、警告、调试、信息和跟踪。

**导入"积云记录器"类:**

``python
不同级别的日志记录方法:**

``python
logger.trace('<;your message>;')
logger.debug('<;your message>;')
logger.info('<;your message>;')
logger.warn('<;your message>;')
logger.error('<;your message>;')
logger.fatal('<;your message>;')
````

**它还可以像python logger一样接受其他非关键字和关键字参数。**


msg是消息格式字符串,args和kwargs是字符串格式的参数。

"exc_info"或"sys.exc_info()"中的操作将添加到消息中。

`````
logger.debug(msg,*args,**kwargs)
````


**示例用法:**

``python
import os
import sys

from run cumulus任务import run cumulus任务
from cumulus logger import cumuluslogger

任务的输出
返回{"example":"output"}


def处理程序(事件、上下文):
确保在logger
logger.set metadata(事件、上下文)
返回运行积云任务(任务、事件、上下文)
```

sts

运行测试需要[localstack](https://github.com/localstack/localstack)。


他执行nosetests命令:

```
$cumulus-env=testing nosetests-v-s
````



这种方法有几个主要优点:

1。它明确防止任务对内部拥有的数据结构(如meta和cumulus meta)进行假设,从而在将来的更新中可能会被破坏。若要访问这些结构中的字段,必须在工作流配置中显式传递
任务的数据。
1。它为各种数据结构提供了更清晰的所有权。运算符拥有"meta"。积云拥有"积云元"。任务定义自己的"配置"、"输入"和"输出"格式。积云消息适配器大大简化了lambda函数的运行,而不是为积云显式创建的函数。T这种方法大大简化了对任务的测试,因为任务不需要设置复杂的结构来模拟消息协议,只需测试它们的业务功能。

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

推荐PyPI第三方库


热门话题
java流/下载文件,无需在Spring Boot中保留内存   kotlin/java是否有类似TryParse()的东西?   java Spring引导找不到用户类型的属性ID   java Spring 2到Spring 3的迁移:一个控制器用于多个视图   java包含多个程序包名为“安卓”的库。支持图样可提取'   java spring JPA是否支持自定义值框架?   java转义出基于文本字段的搜索栏   java AAPT:错误:未找到样式属性“安卓:attr/WindowsPlashCreenBackground”   java从文本文件中读取纬度和经度   java哪里可以找到如何使用排序的示例。顺序ignorecase(),其中nullhandling nulls last用于自定义Spring JPA如何提供查询   尝试使用Dialogflow上的Webhook动态给出响应时,java获取Webhook响应错误(206)   如何在java中替换匹配的字符串?   java模拟数学的最大价值。随机的   java Spring RestTemplate GET请求未给出正确响应   春爪哇。lang.IllegalArgumentException   java系统。load()永远不会发生   java剪辑循环不工作   java如何从maven构建中删除staxapi   java ThreadPoolExecutor的排队行为是否可以自定义,以更喜欢创建新线程而不是排队?