Add:
bitshift/crawler/(__init__, crawl).py
-Move `__init__.py` to `crawl.py`, and add a `main` block to allow
running the crawler via `python -m`.
tags/v1.0^2
| @@ -1,55 +0,0 @@ | |||
| """ | |||
| :synopsis: Parent crawler module, which supervises all crawlers. | |||
| Contains functions for initializing all subsidiary, threaded crawlers. | |||
| """ | |||
| import logging, logging.handlers, os, Queue | |||
| from bitshift.crawler import crawler, indexer | |||
| __all__ = ["crawl"] | |||
| def crawl(): | |||
| """ | |||
| Initialize all crawlers (and indexers). | |||
| Start the: | |||
| 1. GitHub crawler, :class:`crawler.GitHubCrawler`. | |||
| 2. Bitbucket crawler, :class:`crawler.BitbucketCrawler`. | |||
| 3. Git indexer, :class:`bitshift.crawler.indexer.GitIndexer`. | |||
| """ | |||
| _configure_logging() | |||
| MAX_URL_QUEUE_SIZE = 5e3 | |||
| repo_clone_queue = Queue.Queue(maxsize=MAX_URL_QUEUE_SIZE) | |||
| threads = [crawler.GitHubCrawler(repo_clone_queue), | |||
| crawler.BitbucketCrawler(repo_clone_queue), | |||
| indexer.GitIndexer(repo_clone_queue)] | |||
| for thread in threads: | |||
| thread.start() | |||
| def _configure_logging(): | |||
| LOG_FILE_DIR = "log" | |||
| if not os.path.exists(LOG_FILE_DIR): | |||
| os.mkdir(LOG_FILE_DIR) | |||
| logging.getLogger("requests").setLevel(logging.WARNING) | |||
| logging.getLogger("urllib3").setLevel(logging.WARNING) | |||
| formatter = logging.Formatter( | |||
| fmt=("%(asctime)s %(levelname)s %(name)s %(funcName)s" | |||
| " %(message)s"), datefmt="%y-%m-%d %H:%M:%S") | |||
| handler = logging.handlers.TimedRotatingFileHandler( | |||
| "%s/%s" % (LOG_FILE_DIR, "app.log"), when="H", interval=1, | |||
| backupCount=20) | |||
| handler.setFormatter(formatter) | |||
| root_logger = logging.getLogger() | |||
| root_logger.addHandler(handler) | |||
| root_logger.setLevel(logging.NOTSET) | |||
| @@ -0,0 +1,59 @@ | |||
| """ | |||
| :synopsis: Parent crawler module, which supervises all crawlers. | |||
| Contains functions for initializing all subsidiary, threaded crawlers. | |||
| """ | |||
| import logging, logging.handlers, os, Queue | |||
| from bitshift.crawler import crawler, indexer | |||
| __all__ = ["crawl"] | |||
| def crawl(): | |||
| """ | |||
| Initialize all crawlers (and indexers). | |||
| Start the: | |||
| 1. GitHub crawler, :class:`crawler.GitHubCrawler`. | |||
| 2. Bitbucket crawler, :class:`crawler.BitbucketCrawler`. | |||
| 3. Git indexer, :class:`bitshift.crawler.indexer.GitIndexer`. | |||
| """ | |||
| _configure_logging() | |||
| MAX_URL_QUEUE_SIZE = 5e3 | |||
| repo_clone_queue = Queue.Queue(maxsize=MAX_URL_QUEUE_SIZE) | |||
| threads = [crawler.GitHubCrawler(repo_clone_queue), | |||
| crawler.BitbucketCrawler(repo_clone_queue), | |||
| indexer.GitIndexer(repo_clone_queue)] | |||
| for thread in threads: | |||
| thread.start() | |||
| def _configure_logging(): | |||
| LOG_FILE_DIR = "log" | |||
| if not os.path.exists(LOG_FILE_DIR): | |||
| os.mkdir(LOG_FILE_DIR) | |||
| logging.getLogger("requests").setLevel(logging.WARNING) | |||
| logging.getLogger("urllib3").setLevel(logging.WARNING) | |||
| formatter = logging.Formatter( | |||
| fmt=("%(asctime)s %(levelname)s %(name)s %(funcName)s" | |||
| " %(message)s"), datefmt="%y-%m-%d %H:%M:%S") | |||
| handler = logging.handlers.TimedRotatingFileHandler( | |||
| "%s/%s" % (LOG_FILE_DIR, "app.log"), when="H", interval=1, | |||
| backupCount=20) | |||
| handler.setFormatter(formatter) | |||
| root_logger = logging.getLogger() | |||
| root_logger.addHandler(handler) | |||
| root_logger.setLevel(logging.NOTSET) | |||
| if __name__ == "__main__": | |||
| _configure_logging() | |||
| crawl() | |||