1

是否可以使用/上传自己的库到 IBM Cloud Functions?还是仅限于预装的软件包?我打算使用 Python 作为编程语言。

4

3 回答 3

3

您可以捆绑自己的依赖项。请参阅此处的文档https://github.com/apache/incubator-openwhisk/blob/master/docs/actions-python.md#packaging-python-actions-with-a-virtual-environment-in-zip-files使用您的库创建虚拟环境。文档提供了一个通过requirements.txt.

于 2018-08-20T14:23:29.020 回答
1

可以使用比预安装的更多的库。IBM Cloud Functions 文档和链接的博客文章中有一些提示和技巧,例如,这里是 Python

对于 Python,您可以使用虚拟环境并将其打包,也可以使用包含所需 Python 文件的 zip 文件。虚拟环境可能更容易开始,但最终可能会有很多不必要的文件。我更喜欢下载所需的文件并将它们自己放入一个 zip 文件中。当然,这只是在一定程度上是可控的。

我在有关无服务器 GitHub 流量统计的 IBM Cloud 解决方案教程中使用了该方法。您可以在此 GitHub 存储库中找到源代码,包括我为 Python 操作创建的 zip 文件(请参阅函数文件夹)。

于 2018-08-21T06:53:42.757 回答
0

您可以使用任何 docker 镜像来执行您的操作,只要这些镜像在 Docker Hub 上可用。因此,您可以使用您的库创建自己的图像。

因此,例如,如果您想要添加 python 库的自己的图像,该库yattag是从 python 代码生成 HTML 的库。

你可以这样写一个 Dockerfile:

FROM openwhisk/python3action
RUN pip install yattag

然后构建并推送

$ docker build -t docker.io/msciab/python3action-yattag:latest .
$ docker push docker.io/msciab/python3action-yattag

现在,您有了一个可以在 OpenWhisk/IBM Cloud 中使用的公共映像。

这是一个使用 yattag 的简单 python hello world:

from yattag import Doc

def main(dict):
  doc, tag, text = Doc().tagtext()
  with tag('h1'):
     text('Hello world!')
  dict['body'] = doc.getvalue()
  return dict

创建并运行操作:

$ wsk action create  hello-yattag hello.py --web true --docker msciab/python3action-yattag
$ curl $(wsk action get hello-yattag --url|tail -1)
<h1>Hello world!</h1>
于 2018-08-20T15:05:34.770 回答