Working, refactored news_fetch, better documentation for launch
This commit is contained in:
		| @@ -7,15 +7,13 @@ class TemplateWorker(Thread): | ||||
|     """Parent class for any subsequent worker of the article-download pipeline. They should all run in parallel, thus the Thread subclassing""" | ||||
|     logger = logging.getLogger(__name__) | ||||
|  | ||||
|     def __init__(self, *args, **kwargs) -> None: | ||||
|     def __init__(self, **kwargs) -> None: | ||||
|         target = self._queue_processor # will be executed on Worker.start() | ||||
|         group = kwargs.get("group", None) | ||||
|         name = kwargs.get("name", None) | ||||
|  | ||||
|         super().__init__(group=group, target=target, name=name) | ||||
|         self.keep_running = True | ||||
|         super().__init__(target=target, daemon=True) | ||||
|         self._article_queue = [] | ||||
|         self.logger.info(f"Worker thread {self.__class__.__name__} initialized successfully") | ||||
|      | ||||
|  | ||||
|  | ||||
|     def process(self, article_watcher): | ||||
|         self._article_queue.append(article_watcher)#.article_model.article_url) | ||||
| @@ -23,7 +21,7 @@ class TemplateWorker(Thread): | ||||
|  | ||||
|     def _queue_processor(self): | ||||
|         """This method is launched by thread.run() and idles when self._article_queue is empty. When an external caller appends to the queue it jumps into action""" | ||||
|         while True: # PLEASE tell me if I'm missing an obvious better way of doing this! | ||||
|         while self.keep_running: # PLEASE tell me if I'm missing an obvious better way of doing this! | ||||
|             if len(self._article_queue) == 0: | ||||
|                 time.sleep(5) | ||||
|             else: | ||||
| @@ -39,3 +37,10 @@ class TemplateWorker(Thread): | ||||
|             article = article_watcher.article | ||||
|             article = action(article) # action updates the article object but does not save the change | ||||
|             article.save() | ||||
|             article_watcher.update(self.__class__.__name__) | ||||
|  | ||||
|  | ||||
|     def stop(self): | ||||
|         self.logger.info(f"Stopping worker {self.__class__.__name__} whith {len(self._article_queue)} articles left in queue") | ||||
|         self.keep_running = False | ||||
|         self.join() | ||||
|   | ||||
| @@ -25,7 +25,7 @@ class DownloadWorker(TemplateWorker): | ||||
|             action = self.dl_runner | ||||
|  | ||||
|         super()._handle_article(article_watcher, action) | ||||
|         article_watcher.download_completed = True | ||||
|         # article_watcher.download_completed = True | ||||
|  | ||||
|  | ||||
|  | ||||
| @@ -36,7 +36,7 @@ class FetchWorker(TemplateWorker): | ||||
|     def _handle_article(self, article_watcher): | ||||
|         action = get_description # function | ||||
|         super()._handle_article(article_watcher, action) | ||||
|         article_watcher.fetch_completed = True | ||||
|         # article_watcher.fetch_completed = True | ||||
|  | ||||
|  | ||||
|  | ||||
| @@ -52,7 +52,7 @@ class UploadWorker(TemplateWorker): | ||||
|             return run_upload(*args, **kwargs) | ||||
|  | ||||
|         super()._handle_article(article_watcher, action) | ||||
|         article_watcher.upload_completed = True | ||||
|         # article_watcher.upload_completed = True | ||||
|  | ||||
|  | ||||
|  | ||||
| @@ -63,4 +63,4 @@ class CompressWorker(TemplateWorker): | ||||
|     def _handle_article(self, article_watcher): | ||||
|         action = shrink_pdf | ||||
|         super()._handle_article(article_watcher, action) | ||||
|         article_watcher.compression_completed = True | ||||
|         # article_watcher.compression_completed = True | ||||
		Reference in New Issue
	
	Block a user