import warnings # 屏蔽 Boto3 对 Python 3.7 的弃用警告 warnings.filterwarnings("ignore", message="Boto3 will no longer support Python 3.7") import boto3 import pymysql # 创建对象 sqs = boto3.client('sqs',region_name='cn-northwest-1') url = sqs.get_queue_url(QueueName='AI')['QueueUrl'] response = sqs.receive_message( QueueUrl=url, MessageAttributeNames=['All'], # 获取所有属性 ) if 'Messages' not in response: print('获取不到 messages') exit() print("共有"+str(len(response['Messages']))+"条消息") for msg in response['Messages']: print(f"解析消息:{msg['MessageId']} 主体消息: {msg['Body']} 属性信息:") print(msg['MessageAttributes']) new_key = msg['MessageAttributes']['mykey']['StringValue'] new_value = msg['MessageAttributes']['myvalue']['StringValue'] # 更新数据库 conn = pymysql.connect(host='database-1.cmtr7g9bnytl.rds.cn-northwest-1.amazonaws.com.cn', user='admin',password='12345678',db='test') cursor = conn.cursor() # 判断是否存在相同 key,不存在就新建,存在就更新 cursor.execute(f'SELECT * FROM kv WHERE mykey="{new_key}"') info = cursor.fetchone() if info: # 更新记录 print('存在了,不做更新') else: # 添加记录 sql = f'INSERT INTO kv (mykey,myvalue) VALUES ("{new_key}","{new_value}")' status =cursor.execute(sql) print(status,sql) conn.commit() # 已读消息 sqs.delete_message( QueueUrl=url, ReceiptHandle=msg['ReceiptHandle'] ) print(f"已删除消息,句柄{msg['ReceiptHandle']}")
import json import boto3 def lambda_handler(event, context): sqs = boto3.client('sqs',region_name="cn-northwest-1") url = "https://sqs.cn-northwest-1.amazonaws.com.cn/354319134262/k12" response = sqs.send_message( QueueUrl=url, MessageBody=event['secret_code'] ) # TODO implement return { 'statusCode': 200, 'body': 'success sqs' }
import boto3
import subprocess
# 创建 sqs 连接
sqs = boto3.client(“sqs”,region_name=”cn-northwest-1″)
url = “https://sqs.cn-northwest-1.amazonaws.com.cn/354319134262/k12”
count =0
# 获取最新的消息
while True:
print(f”第{count}次循环接收消息”)
count = count + 1
response = sqs.receive_message(
QueueUrl = url,
MaxNumberOfMessages=1,
WaitTimeSeconds=20
)
if’Messages’notinresponse:
print(‘没有接收到消息’)
else:
print(f”新的Secret_code = {response[‘Messages’][0][‘Body’]}”)
# 更新
withopen(“conf.toml”,’r’) asfile:
files = file.readlines()
code = response[‘Messages’][0][‘Body’]
files[2] = f’secret_code = “{code}” \n’
withopen(“conf.toml”,”w”) asfile:
file.writelines(files)
print(‘更新完成’)
# 重启服务
print(“重启服务”)
subprocess.run(‘kill -9 $(lsof -t -i:7777)’, shell=True)
subprocess.Popen([‘nohup’,’./server_k12′,’conf.toml’])
print(“删除消息”)
# 删除此消息
sqs.delete_message(
QueueUrl=url,
ReceiptHandle=response[‘Messages’][0][‘ReceiptHandle’]
)