首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何正确地与Python共享无服务器代码?

如何正确地与Python共享无服务器代码?
EN

Stack Overflow用户
提问于 2020-04-11 06:11:21
回答 1查看 1.3K关注 0票数 10

我正试图找到使用Python进行健壮的无服务器开发的最佳方法。该项目使用无服务器框架将其划分为多个服务,并在一个monorepo中进行版本化。这是我想要的结构:

  • 服务1/
    • serverless.yml
    • handler.py

  • 服务2/
    • serverless.yml
    • handler.py

  • 共享
    • module_a.py
    • module_b.py

module_a和module_b由共享逻辑组成,这两个服务都应该可用。到目前为止,我已经找到了两种方法:将共享代码包装在一个可安装的包中,并通过pip将其注入服务,或者作为一个层提供共享代码。这两种解决方案都有缺陷,最重要的是,不可能迅速开发该应用程序,因为任何更改都需要pip。我注意到这个问题在Node.js中得到了解决,并且有许多关于Python的问题没有得到回答。

插件 -无服务器包-常见,这似乎解决了这个问题,然而,它看起来不像一种先行的方法。

我感谢任何形式的帮助。

EN

回答 1

Stack Overflow用户

发布于 2020-06-18 23:41:04

也许你可以考虑使用Lambda层。您可以在这里找到一个快速指南:链接

让我举个简单的例子。这个例子有两个无服务器项目-- library有共享代码,service有服务代码。

  1. library -这个项目应该有下面的文件结构。这个项目的根目录中有serverless.yml和另一个将作为模块导出的文件夹。当您在python中使用lambda时,python将被链接并让lambda找到您的模块。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./
└ serverless.yml
└ common/
    └ python/
        └ Common.py

serverless.yml -正如您所看到的,文件夹common在这里显式声明为要导出。请注意,在资源中重用层名称Common,而无服务器框架将自动将其与资源引用匹配。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
service: library
  provider:
    name: aws
    runtime: python3.7
    stage: dev
    region: ap-northeast-1
  layers:
    Common:
      path: common
  resources:
    Outputs:
      CommonLayerExport:
        Value:
          Ref: CommonLambdaLayer
        Export:
          Name: CommonLambdaLayer

公共/python/Common.py (printException是共享函数的一个示例,将用于另一个项目)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys
import traceback
import os

def printException(exception, writer=None):
    if writer is None:
      writer = print
    top = traceback.extract_tb(sys.exc_info()[2])[-1]
    writer(", ".join([type(exception).__name__, str(sys.exc_info()[1]), os.path.basename(top[0]), str(top[1])]))
  1. service serverless.yml --正如您所看到的,每个函数都应该包含层,并且可以引用带有CloudFormation引用的特定层。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
service: layer-test
  provider:
    name: aws
    region: ap-northeast-1
    runtime: python3.7
    stage: dev
  functions:
    exceptionExample:
      handler: handler.func
      layers:
        - ${cf:library-dev.CommonLayerExport}
      events:
        - http:
            path: exceptionExample
            method: get

handler.py -现在我们可以很容易地从共享层导入共享模块。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import json
import Common

def func(event, context):
    try:
        1/0 # just to raise an exception and test the shared function
    except Exception as e:
        Common.printException(e)

    response = {
        "statusCode": 200,
    }
    return response

您应该注意的一点是,由于lambda层没有打包导入的模块,所以您也应该导入您的层在服务中使用的模块。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61158117

复制
相关文章
将tensor转换为图像_tensor转int
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/07
11.4K0
Java转Ruby【快速入门】
对于准备迈入 Ruby 的 Java 程序员来说,有几个地方需要特别的去了解一下。
我没有三颗心脏
2019/05/10
3.2K0
Java转Ruby【快速入门】
java map 转string_java-将Map <String,Object>转换为Map <String,String>
Map map = new HashMap(); //Object is containing String
全栈程序员站长
2022/08/25
12.3K0
将字符串转换为date类型_java字符串转date类型
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/09
14.1K0
java将字符串转换为json对象的方法_java jsonobject转string
在与服务器交互的时候,我们往往会使用json字符串,今天的例子是java对象转化为字符串,
全栈程序员站长
2022/11/08
21.2K0
将KITTI转换为PASCAL VOC
import os, sysimport globfrom PIL import Image # VEDAI 图像存储位置src_img_dir = "D:\dataset\cityscapes\leftImg8bit\\train\\zurich\\"# VEDAI 图像的 ground truth 的 txt 文件存放位置src_txt_dir = "D:\dataset\cityscapes\gtFine\\train\\zurich\\"src_xml_dir = "D:\dataset\citys
狼啸风云
2020/07/14
7340
python 将图片转换为txt
matinal
2023/10/13
3210
python 将图片转换为txt
istio virtualservice:使用正则过滤流量
Istio regular expressions use the RE2 regular expression syntax.
SRE扫地僧
2021/03/14
2K0
将Windows日志转换为Syslog
无论是Unix、Linux、FreeBSD、Ubuntu,还是路由器、交换机,都会产生大量的日志,而这些,一般会以syslog的形式存在。在RFC 3164中定义了syslog是一种日志协议,syslog数据包的大小为1024字节,包含Facility, Severity, Hostname, Timestamp和Message信息。syslog服务器默认使用UDP 514号端口。简单的说,syslog可以告诉管理员:谁(Facility),什么时间(Timestamp),什么地方(Hostname)做了什
张善友
2018/01/29
5K0
python regex replace
正则匹配-直接内容替换 s = 'dsoheoifsdfscoopaldshfowefcoopasdfjkl;' ss = s.replace('coop','###') print(s,'\n',ss) dsoheoifsdfscoopaldshfowefcoopasdfjkl; dsoheoifsdfs###aldshfowef###asdfjkl; import re regex = re.compile(r'coop') # 正则匹配替换 regex.sub('$$$$$','sdlaf
py3study
2020/01/08
2.4K0
刨根究底正则表达式之二——正则表达式基础
虽然本系列文章开篇会简单介绍正则表达式的一些基础知识,但主要限于本系列文章所想强调的要点,因此本系列文章并不适合用于入门。
笨笨阿林
2019/01/18
1.2K0
string转换为jsonarray_jsonobject转jsonarray
如果用的是fastjson 则导包为 import com.alibaba.fastjson.JSONObject
全栈程序员站长
2022/09/22
1.9K0
string转换为jsonarray_jsonobject转jsonarray
Python批量将ppt转换为pdf
将脚本跟PPT文件放置在同一个文件夹下,运行脚本,能够批量地将微软Powerpoint文件(.ppt或.pptx)转换为pdf格式。
python亦希
2022/01/18
1.3K0
如何批量将PDF转换为图片?
在生活工作中,我们会处理很多电子合同。这些电子合同一般是PDF格式,不但存储空间大,且预览起来不太便捷,需要我们转换为图片格式更方便预览。如果人工一一处理比较繁琐复杂,有没有什么方案可以快速将pdf转换为图片呢?
阿那个沫
2023/07/05
3230
如何批量将PDF转换为图片?
使用Python将PDF转换为Excel
在本文中,我们将了解如何使用Python将PDF转换为Excel。如果你处理数据,那么很可能已经或将不得不处理存储在.pdf文件中的数据。从PDF复制表格并将其直接粘贴到Excel是很困难的,在大多数情况下,我们从PDF文件中复制的是文本,而不是格式化的Excel表格。因此,当将数据粘贴到Excel中时,我们会看到一块文本被压缩到一个单元格中。
fanjy
2022/03/07
3.9K0
使用Python将PDF转换为Excel
如何将ownCloud转换为Nextcloud
ownCloud的核心开发团队中一部分人员启动了一个名为Nextcloud的项目。虽然ownCloud将继续开发,但您可能想了解新项目的功能。Nextcloud和ownCloud共享一个公共代码库,这意味着将现有的ownCloud安装迁移到Nextcloud中。
小铁匠米兰的v
2018/08/02
2.6K0
一天学完spark的Scala基础语法教程十一、正则表达式(idea版本)
你可以使用 mkString( ) 方法来连接正则表达式匹配结果的字符串,并可以使用管道(|)来设置不同的模式:
红目香薰
2022/11/29
1.1K0
一天学完spark的Scala基础语法教程十一、正则表达式(idea版本)
char转换为数字_char字符转int
刷题遇到一个考点是 char型数字 转 int 进行计算的问题。一看就会,一做就错,显然是在这里的认识薄弱了。将一番搜索的结果记录下来,以备再忘来打脸。
全栈程序员站长
2022/11/10
4.1K0
libexslt库将XML转换为JSON
最近在一个 C 程序中碰到需要将 XML 数据转换为 JSON 数据的问题,多番查找几种方法,觉得此程序刚好用到了 Linux 下的 libexslt XSLT 库,因此想直接通过 XSLT 将 XML 转为 JSON 数据。
随心助手
2019/10/15
4.3K0
点击加载更多

相似问题

将Perl regex转换为python regex

20

将perl regex转换为python regex

21

将Perl regex转换为python

20

将perl regex转换为Java

37

将Perl Regex转换为PHP

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文