limit.py 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. import os
  2. import sys
  3. from datetime import datetime, timedelta
  4. sys.path.append(os.getcwd())
  5. from common.aliyun_log import AliyunLogger
  6. from common.scheduling_db import MysqlHelper
  7. from common.db import RedisClient
  8. def generate_expire_time():
  9. """
  10. 计算出过期时间
  11. """
  12. now = datetime.now()
  13. # 当天晚上12点的时间
  14. midnight = datetime(now.year, now.month, now.day) + timedelta(days=1)
  15. # 计算当前时间到当天晚上12点的秒数
  16. seconds_until_midnight = int((midnight - now).total_seconds())
  17. return seconds_until_midnight
  18. class AuthorLimit(object):
  19. """
  20. 账号爬虫限量
  21. """
  22. def __init__(self, mode, platform):
  23. self.mode = mode
  24. self.platform = platform
  25. self.limit_tag_dict = {"352": "余海涛", "353": "罗情", "53": "范军", "51": "鲁涛", "131": False}
  26. def find_tag(self, uid):
  27. """
  28. 通过 uid 去找符合标准的 tag
  29. """
  30. sql = f"""select tag from crawler_user_v3 where uid={uid};"""
  31. result = MysqlHelper.get_values(
  32. log_type=self.mode, crawler=self.platform, env="prod", sql=sql
  33. )
  34. tags = result[0]["tag"]
  35. if tags:
  36. tags = tags.split(",")
  37. if "131" in tags:
  38. return None
  39. else:
  40. for tag in tags:
  41. if self.limit_tag_dict.get(tag):
  42. return tag
  43. return None
  44. def author_limitation(self, user_id):
  45. """
  46. 限制账号, 服务长沙四名同学
  47. """
  48. return True
  49. # if self.mode == "author":
  50. # tag = self.find_tag(user_id)
  51. # if tag:
  52. # AliyunLogger.logging(
  53. # code="8807",
  54. # platform=self.platform,
  55. # mode=self.mode,
  56. # env="prod",
  57. # message="找到个人账号,{}".format(tag)
  58. # )
  59. # R = RedisClient()
  60. # if R.connect():
  61. # tag_count = R.select(tag)
  62. # if tag_count:
  63. # tag_count = int(tag_count.decode("utf-8"))
  64. # if tag_count <= 300:
  65. # tag_count += 1
  66. # expire_seconds = generate_expire_time()
  67. # R.insert(
  68. # key=tag, value=tag_count, expire_time=expire_seconds
  69. # )
  70. # return True
  71. # else:
  72. # # 报警
  73. # return False
  74. # else:
  75. # tag_count = 1
  76. # expire_seconds = generate_expire_time()
  77. # R.insert(
  78. # key=tag, value=tag_count, expire_time=expire_seconds
  79. # )
  80. # return True
  81. # else:
  82. # return True
  83. # else:
  84. # return True
  85. # else:
  86. # return True