client.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. # -*- coding: utf-8 -*-
  2. import json
  3. import os
  4. import sys
  5. import requests
  6. from simulation.encrypt_message import encrypt_message
  7. from clustering.util import Constants
  8. class Client(object):
  9. def __init__(self, server, text_file):
  10. self.server = server
  11. if not os.path.exists(text_file):
  12. raise IOError
  13. self.text_file = text_file
  14. def batch_upload_user_info(self, batch_size=100, gen_cover=0):
  15. with open(self.text_file, "r") as f:
  16. lines = f.readlines()
  17. batches = [
  18. lines[x : x + batch_size] for x in range(0, len(lines), batch_size)
  19. ]
  20. for batch in batches:
  21. body = json.dumps(batch)
  22. try:
  23. body = encrypt_message(body)
  24. r = requests.post(self.server, data=body)
  25. print(r.text)
  26. if gen_cover:
  27. for _ in Constants.NUM_COVER:
  28. cover_msg = self.cover_message_gen(body)
  29. cover_msg = encrypt_message(cover_msg)
  30. r = requests.post(self.server, data=cover_msg)
  31. print(r.text)
  32. except Exception as e:
  33. print(e)
  34. def cover_message_gen(self, msg):
  35. user = msg.user_id
  36. time = msg.timestamp
  37. return {"timestamp": time, "user_id": user}
  38. if __name__ == "__main__":
  39. server = sys.argv[1]
  40. text_file = sys.argv[2]
  41. client = Client(server, text_file)
  42. client.batch_upload_user_info(batch_size=10000)