Advertisement
Guest User

Python Cronjob

a guest
Jan 16th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.35 KB | None | 0 0
  1. import logging
  2.  
  3. from configobj import ConfigObj
  4.  
  5. from cmdlineutil import CronJob
  6. from sqlalchemyutil import engine_from_properties
  7.  
  8. from jsfraudlabelercronjobs.dao.frauddetectiondb_dao import FrauddetectiondbDAO
  9. from jsfraudlabelercronjobs.dao.labeler_dao import LabelerDAO
  10. from jsfraudlabelercronjobs.sql_query_builder import SQLQueryBuilder
  11. from jsfraudlabelercronjobs.domainlab_outbound.doc_builder import DocBuilder
  12. from jsfraudlabelercronjobs.domainlab_outbound.domainlab_outbound import DomainlabOutbound
  13.  
  14. TOOL_NAME = 'domainlab_outbound_cronjob'
  15. LOG = logging.getLogger(TOOL_NAME)
  16.  
  17. def begin_execution(config, mysql_engine):
  18. TASK_NAME = 'asbo_domain_labeler'
  19. API_KEY = config['labeler.domainlab_cronjobs.api_key']
  20. POST_DOC_URL = config['labeler.post_doc_url']
  21. GET_DOC_URL = config['labeler.get_doc_url']
  22.  
  23. frauddb_dao = FrauddetectiondbDAO(mysql_engine)
  24. labeler_dao = LabelerDAO(TASK_NAME, API_KEY, POST_DOC_URL, GET_DOC_URL)
  25. doc_builder = DocBuilder(TASK_NAME, API_KEY)
  26. query = SQLQueryBuilder()._domain_labeler_query()
  27.  
  28. domainlab_outbound = DomainlabOutbound(frauddb_dao, labeler_dao, doc_builder, query)
  29. domainlab_outbound.run()
  30.  
  31. class DomainlabLabelerCronjob(CronJob):
  32. """An implementation of the cmdlineutil CronJob
  33.  
  34. Implement CronJob class so that this script
  35. handles the ops specific requirements for a command line cron job
  36. """
  37. name = TOOL_NAME
  38. display_name = 'JSFraudDomainlabOutboundCronjob'
  39. options = [
  40. (('config_filename',), dict(action='store', help='The config file.')),
  41. ]
  42.  
  43. def __init__(self):
  44. super(DomainlabLabelerCronjob, self).__init__()
  45.  
  46. def _run_impl(self):
  47. """
  48. This method loads MySQL credentials from
  49. A) Your team's `product_group_auto.properties` if running in Mesos
  50. B) Props argument you send during local dev with: --props creds.txt
  51.  
  52. It then creates a sqlalchemy Engine.
  53. """
  54.  
  55. mysql_frauddetection_engine = engine_from_properties("mysql.frauddetection", self.props)
  56.  
  57. LOG.info("STARTING %s .", self.display_name)
  58. begin_execution(self.props, mysql_frauddetection_engine)
  59.  
  60.  
  61. def _main():
  62. """Setup and start the cmdlineutil CronJob integration.
  63. """
  64. app = DomainlabLabelerCronjob()
  65. app.run()
  66.  
  67. if __name__ == '__main__':
  68. _main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement