Lambda + Python + 退出代码

2023-11-23

我遇到了用 Python 编写的简单 AWS Lambda 函数的问题。

当我运行 Lambda 函数时,我的代码按预期运行,结果正确,但仍以错误代码(退出代码)结束:"Process exited before completing request",这导致 Lambda 运行 3 次(异步)。

您有管理 Lambda 退出代码的最佳实践吗?

#!/usr/bin/python

import boto3
import sys
import tweepy
import datetime

session = boto3

# Init s3 client
s3 = session.resource('s3')

def get_data_and_push(s3_bucket, s3_key, user):
    # Retrieve CSV file
    try:
        dest = s3.Object(s3_bucket, s3_key)
        dest.download_file(tmpfile)
    except Exception, e:
        print 'An error occured while trying to download CSV file'
        print 'This exception has been thrown :'
        print e
        sys.exit(1)

    # Authenticate to Twitter
    try:
        auth = tweepy.OAuthHandler(t_consumer_key, t_consumer_secret)
        auth.set_access_token(t_access_token_key, t_access_token_secret)
        api = tweepy.API(auth)
    except Exception, e:
        print 'Cannot authenticate to Twitter.'
        print 'This exception has been thrown :'
        print e
        sys.exit(2)

    data = api.get_user(user)
    print 'User : ' + data.screen_name
    print 'Followers : ' + str(data.followers_count)
    print 'Friends : ' + str(data.friends_count)
    print '-----------'

    # Get today's date
    today = datetime.datetime.now().strftime("%Y-%m-%d")

    # Write result
    try:
        # Write result at the end of the file
        file = open(tmpfile, 'a')
        file.write(today + ',' + str(data.followers_count) + ',' + str(data.friends_count)+ '\n')
        file.close()
    except Exception, e:
        print 'Unable to write in temp file'
        print 'This exception has been thrown :'
        print e
        sys.exit(5)

    # Upload final file
    try:
        # Push file to S3
        dest.upload_file(tmpfile)
    except Exception, e:
        print 'An error occured while trying to upload CSV file'
        print 'This exception has been thrown :'
        print e
        sys.exit(6)

def main(event, context):
    for user in userlist:
        get_data_and_push(bucket, 'export_' + user + '.csv', user)
    sys.exit(0)

感谢您的帮助,


Short

是的,删除sys.exit(0)在你的代码末尾,应该可以做到:-)


Longer

通过做sys.exit(0)您实际上停止了在 Lambda 函数中运行代码的进程。而这并不是执行者所期望的。

我假设 Lambda 函数的处理程序实际上是在 AWS 框架内运行的。因此,您已经处于 python 进程中,并且您的处理程序在 AWS 代码中的某个位置被调用。因此,如果退出该过程,实际上是缩短了AWS的框架,该框架无法处理Lambda执行的解析。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Lambda + Python + 退出代码 的相关文章

  • 在 Celery 任务中调用 Google Cloud API 永远不会返回

    我正在尝试拨打外部电话Google Cloud Natural Language API从一个内Celery任务 使用google cloud python包裹 问题是对 API 的调用永远不会返回 挂起 celery task def g
  • NLTK 2.0分类器批量分类器方法

    当我运行此代码时 它会抛出一个错误 我认为这是由于 NLTK 3 0 中不存在batch classify 方法 我很好奇如何解决旧版本中的某些内容在新版本中消失的此类问题 def accuracy classifier gold resu
  • Python 3d 绘图设置固定色阶

    我正在尝试绘制两个 3d 数组 第一个数组的 z 值在范围内 0 15 0 15 第二个来自 0 001 0 001 当我绘图时 色标自动遵循数据范围 如何设置自定义比例 我不想看到 0 001 的浅色 而应该看到 0 15 的浅色 如何修
  • Amazon S3 - 每个子域有 1 个存储桶和一个文件夹?

    我需要创建一项服务 允许用户在自定义子域中发布静态页面 我从来没有这样做过 所以如果这个问题听起来有点太基本了 请原谅我 为此 我希望将所有这些静态文件托管在 Amazon S3 或 Google 云存储等中 以将其与我的服务器分开 使其可
  • 如何将特定范围内的标量添加到 numpy 数组?

    有没有一种更简单 更节省内存的方法可以单独在 numpy 中执行以下操作 import numpy as np ar np array a l r ar c a a 0 l ar tolist a r 它可能看起来很原始 但它涉及获取给定数
  • Python 3:将字符串转换为变量[重复]

    这个问题在这里已经有答案了 我正在从 txt 文件读取文本 并且需要使用我读取的数据之一作为类实例的变量 class Sports def init self players 0 location name self players pla
  • 导入错误:没有名为flask.ext.login的模块

    我的flask login 模块有问题 我已经成功安装了flask login模块 另外 从命令提示符我可以轻松运行此脚本 不会出现错误 Python 2 7 r27 82525 Jul 4 2010 07 43 08 MSC v 1500
  • 未知错误:Chrome 无法启动:异常退出

    当我使用 chromedriver 对 Selenium 运行测试时 出现此错误 selenium common exceptions WebDriverException Message unknown error Chrome fail
  • python的shutil.move()在linux上是原子的吗?

    我想知道python的shutil move在linux上是否是原子的 如果源文件和目标文件位于两个不同的分区上 行为是否不同 或者与它们存在于同一分区上时的行为相同吗 我更关心的是如果源文件和目标文件位于同一分区上 shutil move
  • 当字段是数字时怎么说...在 mongodb 中匹配?

    所以我的结果中有一个名为 城市 的字段 结果已损坏 有时它是一个实际名称 有时它是一个数字 以下代码显示所有记录 db zips aggregate project city substr city 0 1 sort city 1 我需要修
  • 如何将 ascii 值列表转换为 python 中的字符串?

    我在 Python 程序中有一个列表 其中包含一系列数字 这些数字本身就是 ASCII 值 如何将其转换为可以在屏幕上回显的 常规 字符串 您可能正在寻找 chr gt gt gt L 104 101 108 108 111 44 32 1
  • Python - 如何确定解析的 XML 元素的层次结构级别?

    我正在尝试使用 Python 解析 XML 文件中具有特定标记的元素并生成输出 excel 文档 该文档将包含元素并保留其层次结构 我的问题是我无法弄清楚每个元素 解析器在其上迭代 的嵌套深度 XML 示例摘录 3 个元素 它们可以任意嵌套
  • 找到一个数字所属的一组范围

    我有一个 200k 行的数字范围列表 例如开始位置 停止位置 该列表包括除了非重叠的重叠之外的所有类型的重叠 列表看起来像这样 3 5 10 30 15 25 5 15 25 35 我需要找到给定数字所属的范围 并对 100k 个数字重复该
  • 带有 LSTM 的 GridSearchCV/RandomizedSearchCV

    我一直在尝试通过 RandomizedSearchCV 调整 LSTM 的超参数 我的代码如下 X train X train reshape X train shape 0 1 X train shape 1 X test X test
  • 如何使用 AWS Lambda Python 读取 AWS S3 存储的 Word 文档(.doc 和 .docx)文件内容?

    我的场景是 我尝试使用 python 实现从 Aws Lambda 读取 AWS 存储的 S3 word 文档 doc 和 docx 文件内容 下面的代码是我使用的 我的问题是我可以获取文件名 但无法读取内容 def lambda hand
  • 如何将 Django 中的权限添加到模型并使用 shell 进行测试

    我在模型中添加了 Meta 类并同步了数据库 然后在 shell 中创建了一个对象 它返回 false 所以我真的无法理解错误在哪里或者缺少什么是否在其他文件中可能存在某种配置 class Employer User Employer in
  • 等待子进程使用 os.system

    我用了很多os system在 for 循环内调用创建后台进程 如何等待所有后台进程结束 os wait告诉我没有子进程 ps 我使用的是Solaris 这是我的代码 usr bin python import subprocess imp
  • 在virtualenv中下载sqlite3

    我正在尝试使用命令创建应用程序python3 manage py startapp webapp但我收到一条错误消息 django core exceptions ImproperlyConfigured 加载时出错 pysqlite2 或
  • NLTK:查找单词大小为 2k 的上下文

    我有一个语料库 我有一个词 对于语料库中该单词的每次出现 我想获取一个包含该单词之前的 k 个单词和该单词之后的 k 个单词的列表 我在算法上做得很好 见下文 但我想知道 NLTK 是否提供了一些我错过的功能来满足我的需求 def size
  • 如何在Python脚本中从youtube-dl中提取文件大小?

    我是 python 编程新手 我想在下载之前提取视频 音频大小 任何 YouTube 视频 gt gt gt from youtube dl import YoutubeDL gt gt gt url https www youtube c

随机推荐

  • SessionState 和 ViewState 有什么区别?

    ASP NET 中的 SessionState 和 ViewState 有什么区别 会话状态包含与服务器的特定会话 由特定客户端 浏览器 计算机 相关的信息 这是一种跟踪用户在网站上所做的事情的方法 跨多个页面 在网络的无状态性中 例如特定
  • 联合和文本有什么区别?

    在 git repo 的根目录下有一个 gitattributes 文件 该文件包含以下值 txt text merge text py text merge union merge text 和 merge union 有什么区别 内置合
  • timepicker:何时选择 24 小时或上午/下午模式

    我的应用程序中有一些时间选择器 在我的国家 西班牙 我们习惯于以 24 小时模式显示时间 但在其他国家则习惯于 am pm 我知道如何将时间选择器设置为 24 点或上午 下午模式 但是根据设备区域设置或国家 地区显示上午 下午或 24 点的
  • 在 Azure Durable Functions Orchestrator 中使用异步辅助函数是否安全?

    我正在尝试偶尔寻找一些Non Deterministic workflow detected TaskScheduledEvent 0 TaskScheduled 我们的持久功能项目中出现错误 这种情况并不常见 大约 10 000 个实例中
  • 如何淡入/淡出矩形或文本?

    我想实现淡入 淡出矩形或文本的效果 我在 UIVIew 的 drawRect 方法中调用 CGContextFillRect 或 CGContextShowText 我想知道是否有一种方法可以在不使用 UIView 支持的情况下实现动画 即
  • .find() 比基本后代选择方法更快吗?

    滑轨 30 英寸保罗 爱尔兰的博客提及 container find div robotarm 比 container div robotarm 这是真的 也许在 jQuery 的早期版本中就是这种情况 然而 表达 container di
  • Hibernate 标准查询使用键字段上的 Max() 投影并按外键进行分组

    我很难将此查询 直接在数据库上工作 表示为 Hibernate 版本 3 2 5 中的条件查询 SELECT s FROM ftp status s WHERE s datetime s connectionid IN SELECT MAX
  • 在 WinSock 中处理异步套接字?

    我正在使用消息窗口和 WSAAsyncSelect 如何使用一个消息窗口跟踪多个套接字 客户端 Windows 支持多种套接字操作模式 您需要明确您正在使用哪一种 阻塞套接字 发送和接收块 非阻塞套接字 send和recv返回E WOULD
  • 如何在服务器端运行不受信任的代码?

    我试图使用沙盒模块在 linux node js 中运行不受信任的 javascript 代码 但它已损坏 我需要的只是让用户编写打印输出一些文本的 javascript 程序 不允许其他 I O 只使用普通的 javascript 没有其
  • javax.ejb.Singleton在集群环境下是如何单例的?

    我需要为集群环境中的所有用户和所有节点维护一个在应用程序中唯一的简单计数器 我考虑过使用单例会话 bean 注释 javax ejb Singleton 如下所示 package foo import javax ejb Singleton
  • 如何突出显示 Rails 验证错误上的字段

    如何在 Rails 3 1 中突出显示未通过验证错误的字段的表单字段 我知道脚手架会自动生成 css 和控制器代码来处理这个问题 但我想知道是否有办法手动生成 我已经通过以下方式实现了错误消息的字符串显示 user errors full
  • 如何在单个 for-eachin XSLT 中选择多个节点

    我正在尝试学习 XSLT 但通过示例效果最好 我想执行一个简单的模式到模式转换 如何仅通过一次传递来执行此转换 我当前的解决方案使用两次传递并丢失客户的原始订单 From
  • 如何使用 Java 中的流创建两个数组的映射?

    假设我有两个数组Double Double a new Double 1 2 3 Double b new Double 10 20 30 使用 Java 流 如何创建地图 Map
  • 比较两个 xml 并使用 LINQ 打印差异

    我正在比较两个 xml 并且必须打印差异 我怎样才能使用 LINQ 来实现这一点 我知道我可以使用 Microsoft 的 XML diff 补丁 但我更喜欢使用 LINQ 如果你有任何其他想法我会实现 第一个XML
  • 如何获取通过 USB 端口连接到 Android 设备的条码扫描仪的扫描结果?

    外部激光条码扫描仪连接到 Android POS 设备 我需要在我的应用程序中访问扫描结果 这怎么可能 需要 Android 操作系统版本 2 3 及以上版本的支持 大多数 USB 扫描仪通过 HID 配置文件连接 因此 Android 应
  • 无法在文本框中输入双精度值

    我正在开发 mvc net Web 应用程序 并使用实体框架来生成模型 我有包含双精度属性的类 我的问题是当我使用 HTML EditorFor model gt model Double attribute 并测试我的应用程序 我无法在该
  • null==object 和 object==null 之间的区别[重复]

    这个问题在这里已经有答案了 您好 我想知道上述比较之间的区别 当我检查时出现空指针异常object getItems null 但如果我把它改成null object getItems 效果很好 我确实调查过这个null object 和
  • Anaconda 未更新到最新版本

    anaconda的最新版本是2 5 当我输入 conda update conda conda update anaconda I get All requested packages already installed packages
  • 如何设置 Gruntfile 在 heroku 上使用 compass/sass?

    我已经成功设置了我的heroku应用程序咕噜构建包 当我将 Node js 应用程序推送到 heroku 时 它将运行适当的 grunt 任务 我想要的是使用 grunt contrib compass 包来编译我的 scss 文件 但这需
  • Lambda + Python + 退出代码

    我遇到了用 Python 编写的简单 AWS Lambda 函数的问题 当我运行 Lambda 函数时 我的代码按预期运行 结果正确 但仍以错误代码 退出代码 结束 Process exited before completing requ