forked from kiran-kodali-10/distributed-systems-backend
-
Notifications
You must be signed in to change notification settings - Fork 0
/
subscriber3.py
81 lines (59 loc) · 2.32 KB
/
subscriber3.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import socket
import json
import time
import logging
from urllib.parse import urlencode
import re
# Configure the logger to get the logs
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
def sendRequest(host_id, port, request):
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # socket created
client_socket.connect((host_id, port)) # Connect the client socket to the server with the specified host id and port no.
client_socket.sendall(request.encode()) # Send the HTTP request to the server
# Build the response
response = b""
while True:
response_data = client_socket.recv(4096)
if not response_data:
break
response += response_data
# Logging info of the client entry
logging.info("SUBSCRIBER 3 subscribed to Job Category:Marketing")
decoded_response = response.decode()
start_index = decoded_response.find("[")
end_index = decoded_response.rfind("]")
json_payload = decoded_response[start_index:end_index+1]
json_payload = json_payload.strip()
message ='flask-server-2'
message2 = 'No new Data'
# striped_payload = remove_lines(json_payload)
# logging.info(f'message: {message2}, payload: {json_payload}')
# logging.info(f"payload")
if message in json_payload or message2 in json_payload:
logging.info("No new Data available")
else:
logging.info(f'New Data available: {json_payload}')
logging.info("SUBSCRIBER 3 GOT THE NEW POSTINGS.")
client_socket.close() # Close the socket connection
# Specify the host and port of the server
host_id = "13.52.218.34"
# host_id = "localhost"
port = 8080
subscribed_job_categories = ["MARKETING"]
base_url = "/gs/subscribe"
# Send the HTTP requests with different dynamic data
counter = 1
clientName = "subscriber-3"
while True:
for job_category in subscribed_job_categories:
query_params = {
"clientName":clientName,
"jobCategory": job_category,
"sequence": counter
}
encoded_params = urlencode(query_params)
url = f"{base_url}?{encoded_params}"
request = f"GET {url} HTTP/1.1\r\nHost: {host_id}\r\n\r\n"
# Send the HTTP request
sendRequest(host_id, port, request)
time.sleep(3)