
252
2
부
에이전트 시스템의 구축과 확장
r = redis.Redis(host=REDIS_HOST, port=REDIS_PORT)
last_id = '0'
start_time = time.time()
while time.time() - start_time < timeout:
messages = r.xread({RESPONSE_STREAM: last_id}, count=1, block=5000)
if messages:
stream, entries = messages[0]
for entry_id, entry_data in entries:
response = json.loads(entry_data[b'data'])
if response['task_id'] == task_id:
return response
last_id = entry_id
raise TimeoutError("제한 시간 내에 응답을 받지 못했습니다")
일반적으로 별도 프로세스에서 실행하는 것이 좋습니다 (예:
multiprocessing
). 이렇게 하면
소규모 시스템에서도 설정을 단순하게 유지하면서 빠르게 비동기식 조율을 구성할 수 있습니
다. 예를 들어 공급업체 에이전트는 다른 작업을 막지 않고 컴플라이언스 작업을 처리할 수 있
습니다.
메시지 버스는 에이전트 간 느슨한 결합을