首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Aws lambda函数未实时获取rds Mysql表值

问Python Aws lambda函数未实时获取rds Mysql表值
EN

Stack Overflow用户
提问于 2017-05-13 02:31:55
回答 2查看 775关注 0票数 3

我有一个使用python/pymysql实现的AWS lambda,后端是AWS rds Mysql实例。它的连接和工作都很好,我也可以通过我的android应用程序访问lambda。我遇到的问题是,在我使用本机mysql工作台成功地将一个值插入到rds mysql表中,并从AWS控制台运行lambda函数后,它不会立即显示新插入的值。在python aws lambda代码中,我没有关闭连接或光标。但如果我在AWS控制台上编辑lambda函数,我的意思是只需插入一个空格,然后再次从AWS控制台运行lambda,它将获取新插入的值。如何配置/code使lambda实时获取db值。

EN

回答 2

Stack Overflow用户

发布于 2017-07-03 13:26:34

许多人在编写lambda时使用以下方法。

代码语言:javascript
复制
# open connection
conn = pymysql...

def respond:
  return message

def handler(event, context):
  use conn
  respond

如果调用是" close“在一起,而close是由AWS定义的,则这具有重用DB连接"conn”的效果。问题是,即使你修改了表,这也会给你缓存的读操作。原因是conn不会超出作用域,在重新调用lambda时会被重用。通过将它带到处理程序中,它会超出作用域,并在每次调用时被关闭。这会带来性能损失,但您得到的数据与数据库当前状态下的数据相同。

lambda应该是:

代码语言:javascript
复制
def respond:
  return message

def handler(event, context):
  # open connection
  conn = pymysql...
  use conn
  respond

我可能会对确切的原因感到失望,但这对我来说是有效的。顺便说一句,我试着使用NO_SQL_CACHE,自动提交,显式提交。在我让系统每次重新连接之前,什么都不能用。YMMV!

票数 2
EN

Stack Overflow用户

发布于 2019-06-23 23:58:01

AWS建议建立一个全局连接(在您的处理函数定义之前),以提高性能。我的想法是,即使Lambda的多个实例在紧密连接中运行,也不必建立新的连接,并且重用到DB的前一个连接。但是,如果您的用例涉及通过Lambda引用MySQL表,特别是在表定期更新的情况下,我建议您在本地启动connection对象(在处理程序函数内),然后在运行查询后关闭它。这在很大程度上与@dnevins的回应是一致的,也是我工作的唯一方式。希望这能有所帮助!

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

https://stackoverflow.com/questions/43944404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档