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 apscheduler.schedulers.blocking import BlockingScheduler
  15. from apscheduler.executors.pool import ProcessPoolExecutor
  16. from util.six import Queue
  17. from helper.proxy import Proxy
  18. from helper.fetch import runFetcher
  19. from helper.check import runChecker
  20. from handler.logHandler import LogHandler
  21. from handler.proxyHandler import ProxyHandler
  22. from handler.configHandler import ConfigHandler
  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()