del_test_all_data.py 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import argparse
  2. import json
  3. import sys
  4. import uuid
  5. import time
  6. from pathlib import Path
  7. from urllib import error
  8. from urllib import request
  9. PROJECT_ROOT = Path(__file__).resolve().parents[2]
  10. sys.path.insert(0, str(PROJECT_ROOT))
  11. from pre_data.common.client_tools import redis_client
  12. SEEKER_TYPE_ID = "201c51890c31c308050100218008054251410000000000000000000000000040"
  13. class HttpResponse:
  14. def __init__(self, status_code: int, text: str):
  15. self.status_code = status_code
  16. self.text = text
  17. class HttpClient:
  18. def post(self, url: str, payload: dict):
  19. data = json.dumps(payload, ensure_ascii=False).encode("utf-8")
  20. req = request.Request(
  21. url,
  22. data=data,
  23. headers={"Content-Type": "application/json"},
  24. method="POST",
  25. )
  26. try:
  27. with request.urlopen(req) as resp:
  28. return HttpResponse(resp.status, resp.read().decode("utf-8"))
  29. except error.HTTPError as exc:
  30. return HttpResponse(exc.code, exc.read().decode("utf-8"))
  31. def parse_args():
  32. parser = argparse.ArgumentParser()
  33. parser.add_argument(
  34. "--base-url",
  35. default="http://127.0.0.1:8000",
  36. help="reset 接口服务地址,例如 http://127.0.0.1:8000",
  37. )
  38. return parser.parse_args()
  39. def get_test_device_ids(type_id: str) -> list[str]:
  40. seen: set[str] = set()
  41. device_ids: list[str] = []
  42. pattern = f"device-cycles:{type_id}:*"
  43. for key in redis_client.scan_iter(match=pattern, count=500):
  44. parts = key.split(":")
  45. if len(parts) < 4:
  46. continue
  47. device_id = parts[2]
  48. if not device_id.startswith(""):
  49. continue
  50. if device_id in seen:
  51. continue
  52. seen.add(device_id)
  53. device_ids.append(device_id)
  54. return device_ids
  55. def reset_device(client: HttpClient, base_url: str, type_id: str, device_id: str):
  56. query_timestamp = str(int(time.time() * 1000))
  57. payload = {
  58. "device_info": [
  59. {
  60. "device_id": device_id,
  61. "type_id": type_id,
  62. }
  63. ],
  64. "query_timestamp": query_timestamp,
  65. "id": uuid.uuid4().hex,
  66. }
  67. return client.post(f"{base_url}/api/v1/reset/displayall", payload=payload)
  68. #REDIS_PROFILE=redis_cluster python del_test_all_data.py
  69. if __name__ == "__main__":
  70. args = parse_args()
  71. client = HttpClient()
  72. device_ids = get_test_device_ids(SEEKER_TYPE_ID)
  73. print(f"found {len(device_ids)} test devices")
  74. # print(device_ids)
  75. # for device_id in device_ids:
  76. # response = reset_device(
  77. # client=client,
  78. # base_url=args.base_url,
  79. # type_id=SEEKER_TYPE_ID,
  80. # device_id=device_id,
  81. # )
  82. # print(device_id, response.status_code, response.text)