AWS SQS(Simple Queue Service)를 python으로 전송하기



SQS


AWS SQS 썸네일



IAM 권한 추가






React로 AWS S3 연결해서 사진 올리는 방법(리액트)



SQS 만들기




파이썬을 활용하여 메세지 전송하기


Python
import boto3

#SQS 함수 생성
def sqs(arg, time):
    aws_access_key_id = '퍼블릭 액세스 키'
    aws_secret_access_key = '시크릿 액세스 키'
    region_name = '리전'

    # 큐 이름
    queue_name = '큐 이름'

    # AWS 클라이언트 설정
    sqs = boto3.client('sqs', 
                       aws_access_key_id=aws_access_key_id,
                       aws_secret_access_key=aws_secret_access_key,
                       region_name=region_name)

    # 큐 생성
    response = sqs.create_queue(QueueName=queue_name)
    queue_url = response['QueueUrl']

    print("큐가 생성되었습니다.")

    # 메시지 전송
    message_body = f"{arg} : {time}"
    response = sqs.send_message(QueueUrl=queue_url, MessageBody=message_body)

    print(f"메시지를 전송했습니다. : {arg}")



특정한 상황에서 메세지 보내기


Python
import threading
import random
import time



# 랜덤 값을 생성하는 함수
def generate_random():
    return random.randint(1, 20)

# 첫 번째 스레드 함수
def thread_function():
    global thread2_value, start_time, count
    while True:
        
        if count == 5:
            event.set()
            return
        
        # 랜덤 값 생성
        time.sleep(0.1)
        value = generate_random()
        
        # 현재 스레드의 값 설정
        
        thread2_value = value
        
        # 두 스레드의 값이 같은지 비교
        if thread1_value == thread2_value:
            print(f"두 값이 같습니다! : {thread1_value}")
            end_time = time.time()
            elapsed_time = end_time - start_time
            print(f"값이 같을 때까지 걸린 시간: {elapsed_time:.2f} 초")
            count += 1
            sqs(thread1_value, round(elapsed_time, 2))
            
        
# 두번째 스레드 함수
def default_thread_function():
    global thread1_value, start_time
    while True:
        
        if event.is_set():
            return
        
        # 랜덤 값 생성
        time.sleep(0.1)
        value = generate_random()
        
        # 현재 스레드의 값 설정
        thread1_value = value
        print("thread1_value", thread1_value)
        

       

# 시작 시간 기록
start_time = time.time()

# 각 스레드가 생성한 값 변수 초기화
thread1_value = None
thread2_value = None

# 변수 생성
event = threading.Event()
count = 0

# 두 개의 스레드 생성하여 함수 실행
thread1 = threading.Thread(target=default_thread_function)
thread2 = threading.Thread(target=thread_function)

# 스레드 시작
thread1.start()
thread2.start()

# 스레드가 종료될 때까지 대기
thread1.join()
thread2.join()





결과 확인









AWS Lambda를 사용해서 파일 업로드할 때 이벤트 발생시키기