test_mongo_connection.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. # coding=utf-8
  2. import os
  3. from base import init_env
  4. os.environ.update({"DJANGO_SETTINGS_MODULE": "configs.dev_zjl"})
  5. init_env(False)
  6. from random import randint, choice
  7. from faker import Faker
  8. from apps.web.common.proxy import ClientRechargeModelProxy, ClientConsumeModelProxy, ClientDealerIncomeModelProxy, \
  9. DealerDailyStatsModelProxy
  10. from concurrent.futures import ThreadPoolExecutor, as_completed
  11. def task1(name, startTime, endTime):
  12. try:
  13. record = ClientConsumeModelProxy.get_one(startTime, endTime)
  14. up = True
  15. if record:
  16. pass
  17. # up = record.update(nickname=name)
  18. except Exception as e:
  19. print e
  20. up = False
  21. return bool(up)
  22. def task2(name, startTime, endTime):
  23. try:
  24. record = ClientDealerIncomeModelProxy.get_one(startTime, endTime)
  25. up = True
  26. if record:
  27. pass
  28. # up = record.update(title=name)
  29. except Exception as e:
  30. print e
  31. up = False
  32. return bool(up)
  33. def task3(name, startTime, endTime):
  34. try:
  35. record = DealerDailyStatsModelProxy.get_one(startTime, endTime)
  36. up = True
  37. if record:
  38. pass
  39. except Exception as e:
  40. print e
  41. up = False
  42. return bool(up)
  43. def task4(name, startTime, endTime):
  44. try:
  45. record = ClientRechargeModelProxy.get_one(startTime, endTime)
  46. up = True
  47. if record:
  48. pass
  49. # up = record.update(nickname=name)
  50. except Exception as e:
  51. print e
  52. up = False
  53. return bool(up)
  54. def call_back(future):
  55. pass
  56. def get_st_and_et():
  57. year = randint(2017, 2020)
  58. month = randint(1, 12)
  59. day = randint(1, 28)
  60. # 当 time 是str的时候好像由 datetime 的作用域乱掉了
  61. timeStr = "{}-{:02}-{:02}".format(year, month, day)
  62. return timeStr, timeStr
  63. def main():
  64. TEST_DATA_NUMBER = 10000 # 测试的数据条目
  65. TEST_WORKER = 20 # 测试数据的worker
  66. nameList = [Faker(locale='zh_CN').name() for i in range(100)]
  67. timeList = [get_st_and_et() for i in range(1000)]
  68. executor = ThreadPoolExecutor(max_workers=TEST_WORKER)
  69. futures = [executor.submit(choice([task1, task2, task3, task4]), choice(nameList), *choice(timeList)).add_done_callback(call_back) for i in range(TEST_DATA_NUMBER)]
  70. as_completed(futures)
  71. executor.shutdown(wait=True)
  72. if __name__ == '__main__':
  73. main()