feat: Semaine 9
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
import asyncio, sys
|
||||
import utils, env_var
|
||||
|
||||
class Producer:
|
||||
def __init__(self, host, port):
|
||||
self.host = host
|
||||
self.port = port
|
||||
|
||||
async def send(self, topic, content):
|
||||
writer = None
|
||||
try:
|
||||
reader, writer = await asyncio.open_connection(self.host, self.port)
|
||||
|
||||
message = {
|
||||
"action": "produce",
|
||||
"topic": topic,
|
||||
"content": content
|
||||
}
|
||||
|
||||
await utils.send_json(writer, message)
|
||||
|
||||
response = await utils.receive_json(reader)
|
||||
|
||||
if response and response.get("status") == "OK":
|
||||
print(f"[SUCCES] Message enregistré à l'offset {response.get('offset') + 1}.")
|
||||
else:
|
||||
print("[ERREUR] Le Broker a renvoyé uyne réponse invalide.")
|
||||
|
||||
except ConnectionError:
|
||||
print("[ERREUR] Le Broker est injoignable.")
|
||||
except Exception as error:
|
||||
print(f"[ERREUR] Une erreur est survenue : {error}")
|
||||
finally:
|
||||
if writer:
|
||||
writer.close()
|
||||
await writer.wait_closed()
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) < 3:
|
||||
print("Usage: python producer.py <topic> <message>")
|
||||
sys.exit(1)
|
||||
|
||||
topic_name = sys.argv[1]
|
||||
message_content = " ".join(sys.argv[2:])
|
||||
|
||||
producer = Producer(env_var.HOST, env_var.PORT)
|
||||
asyncio.run(producer.send(topic_name, message_content))
|
||||
Reference in New Issue
Block a user