scheduler.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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.fetch import runFetcher
  18. from helper.check import runChecker
  19. from helper.proxy import Proxy
  20. from handler.logHandler import LogHandler
  21. from handler.proxyHandler import ProxyHandler
  22. def runProxyFetch():
  23. proxy_queue = Queue()
  24. for proxy in runFetcher():
  25. proxy_queue.put(Proxy(proxy).to_json)
  26. runChecker("raw", proxy_queue)
  27. def runProxyCheck():
  28. proxy_queue = Queue()
  29. for proxy in ProxyHandler().getAll():
  30. proxy_queue.put(proxy.to_json)
  31. runChecker("use", proxy_queue)
  32. def runScheduler():
  33. runProxyFetch()
  34. scheduler_log = LogHandler("scheduler")
  35. scheduler = BlockingScheduler(logger=scheduler_log)
  36. scheduler.add_job(runProxyFetch, 'interval', minutes=4, id="proxy_fetch", name="proxy采集")
  37. scheduler.add_job(runProxyCheck, 'interval', minutes=2, id="proxy_check", name="proxy检查")
  38. executors = {
  39. 'default': {'type': 'threadpool', 'max_workers': 20},
  40. 'processpool': ProcessPoolExecutor(max_workers=5)
  41. }
  42. job_defaults = {
  43. 'coalesce': False,
  44. 'max_instances': 10
  45. }
  46. scheduler.configure(executors=executors, job_defaults=job_defaults)
  47. scheduler.start()
  48. if __name__ == '__main__':
  49. runScheduler()