scheduler.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. # -*- coding: utf-8 -*-
  2. """
  3. -------------------------------------------------
  4. File Name: proxyScheduler
  5. Description :
  6. Author : JHao
  7. date: 2019/8/5
  8. -------------------------------------------------
  9. Change Activity:
  10. 2019/8/5: proxyScheduler
  11. -------------------------------------------------
  12. """
  13. __author__ = 'JHao'
  14. from handler.configHandler import ConfigHandler
  15. from apscheduler.schedulers.blocking import BlockingScheduler
  16. from apscheduler.executors.pool import ProcessPoolExecutor
  17. from util.six import Queue
  18. from helper.fetch import runFetcher
  19. from helper.check import runChecker
  20. from helper.proxy import Proxy
  21. from handler.logHandler import LogHandler
  22. from handler.proxyHandler import ProxyHandler
  23. def runProxyFetch():
  24. proxy_queue = Queue()
  25. for proxy in runFetcher():
  26. proxy_queue.put(Proxy(proxy).to_json)
  27. runChecker("raw", proxy_queue)
  28. def runProxyCheck():
  29. proxy_queue = Queue()
  30. for proxy in ProxyHandler().getAll():
  31. proxy_queue.put(proxy.to_json)
  32. runChecker("use", proxy_queue)
  33. def runScheduler():
  34. runProxyFetch()
  35. timezone = ConfigHandler().timezone
  36. scheduler_log = LogHandler("scheduler")
  37. scheduler = BlockingScheduler(logger=scheduler_log, timezone=timezone)
  38. scheduler.add_job(runProxyFetch, 'interval', minutes=4, id="proxy_fetch", name="proxy采集")
  39. scheduler.add_job(runProxyCheck, 'interval', minutes=2, id="proxy_check", name="proxy检查")
  40. executors = {
  41. 'default': {'type': 'threadpool', 'max_workers': 20},
  42. 'processpool': ProcessPoolExecutor(max_workers=5)
  43. }
  44. job_defaults = {
  45. 'coalesce': False,
  46. 'max_instances': 10
  47. }
  48. scheduler.configure(executors=executors, job_defaults=job_defaults, timezone=timezone)
  49. scheduler.start()
  50. if __name__ == '__main__':
  51. runScheduler()