我有一个使用 python/pymysql 和 AWS rds Mysql 实例作为后端的 AWS lambda。它连接良好并且运行良好,我还可以从我的 android 应用程序访问 lambda。 我遇到的问题是,在我使用本地机器 mysql workbench 成功地将一个值插入到 rds mysql 表中并从 AWS 控制台运行 lambda 函数后,它没有立即显示新插入的值。在 python aws lambda 代码上,我没有关闭连接或游标。 但是,如果我在 AWS 控制台上编辑 lambda 函数,我所说的编辑是指插入一个空格并再次从 AWS 控制台运行 lambda,它会获取新插入的值。 我如何配置/编码以使 lambda 实时获取数据库值。
请您参考如下方法:
许多人在编写 lambda 时使用以下方法。
# open connection
conn = pymysql...
def respond:
return message
def handler(event, context):
use conn
respond
如果调用“关闭”在一起(关闭由 AWS 定义),这会产生重用数据库连接“conn”的效果。问题是这将给您缓存读取即使您更改表。原因是 conn 没有超出范围,并且在重新调用 lambda 时被重用。通过将它引入处理程序,它会超出范围并在每次调用时关闭。这会带来性能损失,但您获得的数据与数据库当前状态下的数据相同。
lambda 应该是:
def respond:
return message
def handler(event, context):
# open connection
conn = pymysql...
use conn
respond
我可能不了解确切原因,但这对我有用。顺便说一句,我尝试使用 NO_SQL_CACHE、自动提交、显式提交。在我每次都让系统重新连接之前,什么都没有用。 YMMV!
