From fec7ca40fd7b44fbe281bd458f76bfe4c0254834 Mon Sep 17 00:00:00 2001 From: Ash Date: Tue, 23 Jul 2019 11:49:14 +0200 Subject: [PATCH 1/9] Small cleanup --- stackoversight/scraping/gui.py | 72 ++++++++++++------------ stackoversight/scraping/queue_monitor.py | 11 ---- stackoversight/scraping/scraper.py | 5 +- stackoversight/scraping/site.py | 2 +- 4 files changed, 40 insertions(+), 50 deletions(-) delete mode 100644 stackoversight/scraping/queue_monitor.py diff --git a/stackoversight/scraping/gui.py b/stackoversight/scraping/gui.py index 433c814..a5bffd1 100644 --- a/stackoversight/scraping/gui.py +++ b/stackoversight/scraping/gui.py @@ -1,36 +1,36 @@ -# For gui -from tkinter import * - -# TODO: setup as queue of parent links that this thread will continuously process -root = Tk() - -# TODO: show list of processed and to be processed links in this frame -processing_frame = Frame(root) - -to_be_processed_label = Label(processing_frame, text="Links to be processed") -has_been_processed_label = Label(processing_frame, text="Links that have been processed") - -to_be_processed_label.grid(row=0, column=0) -has_been_processed_label.grid(row=0, column=1) - -processing_frame.pack(side=BOTTOM) - -# TODO: have all the configurable fields able to be set here -link_generation_frame = Frame(root) - -# parent_link_entry = Entry(root) - -fields = [] -for field in site.fields: - var = StringVar() - label = Label(link_generation_frame, text=field.capitalize()) - entry = Entry(link_generation_frame, textvariable=var) - - label.grid(row=len(fields), column=0) - entry.grid(row=len(fields), column=1) - - fields.append((field, var, label, entry)) - -link_generation_frame.pack(side=TOP) - -root.mainloop() +# # For gui +# from tkinter import * +# +# # TODO: setup as queue of parent links that this thread will continuously process +# root = Tk() +# +# # TODO: show list of processed and to be processed links in this frame +# processing_frame = Frame(root) +# +# to_be_processed_label = Label(processing_frame, text="Links to be processed") +# has_been_processed_label = Label(processing_frame, text="Links that have been processed") +# +# to_be_processed_label.grid(row=0, column=0) +# has_been_processed_label.grid(row=0, column=1) +# +# processing_frame.pack(side=BOTTOM) +# +# # TODO: have all the configurable fields able to be set here +# link_generation_frame = Frame(root) +# +# # parent_link_entry = Entry(root) +# +# fields = [] +# for field in site.fields: +# var = StringVar() +# label = Label(link_generation_frame, text=field.capitalize()) +# entry = Entry(link_generation_frame, textvariable=var) +# +# label.grid(row=len(fields), column=0) +# entry.grid(row=len(fields), column=1) +# +# fields.append((field, var, label, entry)) +# +# link_generation_frame.pack(side=TOP) +# +# root.mainloop() diff --git a/stackoversight/scraping/queue_monitor.py b/stackoversight/scraping/queue_monitor.py deleted file mode 100644 index 3dae0d4..0000000 --- a/stackoversight/scraping/queue_monitor.py +++ /dev/null @@ -1,11 +0,0 @@ -from threading import Thread -from queue import Queue - - -class QueueMonitor(Thread): - def __init__(self, queue: Queue): - Thread.__init__(self) - self.queue = queue - - def run(self): - self.queue.join() diff --git a/stackoversight/scraping/scraper.py b/stackoversight/scraping/scraper.py index a797ac3..b61f307 100644 --- a/stackoversight/scraping/scraper.py +++ b/stackoversight/scraping/scraper.py @@ -70,9 +70,10 @@ def scrape_parent_links(self, input_queue: Queue, site: StackOverflow, output_qu def scrape_child_links(self, input_queue: Queue, site: StackOverflow, code_io_handle, text_io_handle, failure: threading.Event): ThreadExecutioner.execute(self.scrape_child_link, input_queue, site, code_io_handle, - text_io_handle, failure) + text_io_handle, failure) - def scrape_parent_link(self, link: str, used_parents: Queue, site: StackOverflow, output_queue: Queue, + @staticmethod + def scrape_parent_link(link: str, used_parents: Queue, site: StackOverflow, output_queue: Queue, failure: threading.Event): try: has_more = True diff --git a/stackoversight/scraping/site.py b/stackoversight/scraping/site.py index 094f070..99c4e00 100644 --- a/stackoversight/scraping/site.py +++ b/stackoversight/scraping/site.py @@ -21,7 +21,7 @@ def __init__(self, sessions: list, timeout_sec: int, limit: int): self.back_off = 0 if not self.balancer: - balancer = SiteBalancer(sessions, timeout_sec, limit) + self.balancer = SiteBalancer(sessions, timeout_sec, limit) def pause(self, pause_time): if not pause_time and self.limit: From 0ae0e28847989d8c16a6d4400d7804d6a5e9bb2c Mon Sep 17 00:00:00 2001 From: Ash Date: Tue, 23 Jul 2019 19:22:47 +0200 Subject: [PATCH 2/9] Adding logging, which is desperately needed for debugging. Threading starts up and appears to work, need to look into it more. Definitely still WIP --- stackoversight/scraping/scraper.py | 81 +++++++++++-------- stackoversight/scraping/stack_overflow.py | 29 ++++--- stackoversight/scraping/thread_executioner.py | 29 +++++-- 3 files changed, 90 insertions(+), 49 deletions(-) diff --git a/stackoversight/scraping/scraper.py b/stackoversight/scraping/scraper.py index b61f307..5b77936 100644 --- a/stackoversight/scraping/scraper.py +++ b/stackoversight/scraping/scraper.py @@ -10,11 +10,18 @@ import json # For thread management from stackoversight.scraping.thread_executioner import ThreadExecutioner +# For logging +import logging class StackOversight(object): - def __init__(self, client_keys: list, proxy=None): + code_lock = threading.Lock() + text_lock = threading.Lock() + + def __init__(self, client_keys: list, kill: threading.Event, proxy=None): if proxy: + logging.info(f'Proxy {proxy} is being used.') + # address of the proxy server self.proxy = 'http://localhost:5050' @@ -29,8 +36,7 @@ def __init__(self, client_keys: list, proxy=None): self.thread_handles = [] self.file_handles = [] - self.code_lock = threading.Lock() - self.text_lock = threading.Lock() + self.kill = kill def start(self, parent_link_queue: Queue, code_file_name='code.txt', text_file_name='text.txt'): code_io_handle = open(code_file_name, 'w') @@ -39,81 +45,84 @@ def start(self, parent_link_queue: Queue, code_file_name='code.txt', text_file_n self.file_handles.extend((code_io_handle, text_io_handle)) child_link_queue = Queue() - kill = threading.Event() parent_link_thread = threading.Thread(target=ThreadExecutioner.execute, - args=(parent_link_queue, self.site, child_link_queue, kill)) + args=(self.scrape_parent_link, parent_link_queue, self.site, + child_link_queue, self.kill)) parent_link_thread.setName("StackExchange API Manager") child_link_thread = threading.Thread(target=ThreadExecutioner.execute, - args=(child_link_queue, self.site, code_io_handle, text_io_handle, kill)) + args=(self.scrape_child_link, child_link_queue, self.site, code_io_handle, + text_io_handle, self.kill)) child_link_thread.setName("StackOverflow Scraping Manager") self.thread_handles.extend((parent_link_thread, child_link_thread)) for handle in self.thread_handles: + logging.info(f'Starting {handle.getName()}.') + handle.start() - kill.wait() + self.kill.wait() for handle in self.thread_handles: was_alive = ThreadExecutioner.murder(handle) - print(f'{handle.getName()} is {["not "] if [not was_alive] else [""]} healthy.') + logging.debug(f'{handle.getName()} was {["not "] if [not was_alive] else [""]} alive.') for file_handle in self.file_handles: file_handle.close() - def scrape_parent_links(self, input_queue: Queue, site: StackOverflow, output_queue: Queue, - failure: threading.Event): - ThreadExecutioner.execute(self.scrape_parent_link, input_queue, site, output_queue, failure) - - def scrape_child_links(self, input_queue: Queue, site: StackOverflow, code_io_handle, text_io_handle, - failure: threading.Event): - ThreadExecutioner.execute(self.scrape_child_link, input_queue, site, code_io_handle, - text_io_handle, failure) - @staticmethod def scrape_parent_link(link: str, used_parents: Queue, site: StackOverflow, output_queue: Queue, - failure: threading.Event): + kill: threading.Event): + current_thread_name = threading.current_thread().getName() + has_more = True + response = None + try: - has_more = True while has_more: try: - # TODO: handle None response # TODO: make sure actually incrementing page response = site.get_child_links(link, pause=True) except SystemExit: raise except: - # TODO: logging - failure.set() - raise + logging.critical(f'Unexpected error caught in {current_thread_name} after making' + f'request with {link}.\n{[response] if [response] else ["Response not captured!"]}' + f'\nNow ending process.') + kill.set() + # TODO: handle None response has_more = response[1] response = response[0] list(map(output_queue.put, response)) if not has_more: + logging.info(f'Finished with link {link}, now marking {current_thread_name} for death.') used_parents.put(threading.currentThread()) + break except SystemExit: - print() - # TODO: logging + logging.info(f'System exit exception raised, {current_thread_name} successfully killed.') def scrape_child_link(self, link: str, used_children: Queue, site: StackOverflow, code_io_handle, text_io_handle, - failure: threading.Event): + kill: threading.Event): + current_thread_name = threading.current_thread().getName() + response = None + try: - # TODO: thread this point on in this method for each link - # TODO: handle None response try: response = site.process_request(link, pause=True)[0] except SystemExit: raise except: - # TODO: logging - failure.set() - raise + logging.critical(f'Unexpected error caught in {current_thread_name} after making' + f'request with {link}.\n{[response] if [response] else ["Response not captured!"]}' + f'\nNow ending process.') + + kill.set() + # TODO: handle None response for code in site.get_code(response): snippet = {'snippet': code} @@ -128,14 +137,16 @@ def scrape_child_link(self, link: str, used_children: Queue, site: StackOverflow json.dump(snippet, text_io_handle) # text_io_handle.write(text) + logging.info(f'Finished with link {link}, now marking {current_thread_name} for death.') used_children.put(threading.current_thread()) except SystemExit: - print() - # TODO: logging + logging.info(f'System exit exception raised, {current_thread_name} successfully killed.') # for debugging only +logging.basicConfig(filename='scraper.log', level=logging.DEBUG) + keys = ['RGaU7lYPN8L5KbnIfkxmGQ((', '1yfsxJa1AC*GlxN6RSemCQ(('] python_posts = StackOverflow.create_parent_link(sort=StackOverflow.Sorts.votes.value, @@ -145,5 +156,7 @@ def scrape_child_link(self, link: str, used_children: Queue, site: StackOverflow link_queue = Queue() link_queue.put(python_posts) -scraper = StackOversight(keys) +_kill = threading.Event() + +scraper = StackOversight(keys, _kill) scraper.start(link_queue) diff --git a/stackoversight/scraping/stack_overflow.py b/stackoversight/scraping/stack_overflow.py index e31e747..3bbf62a 100644 --- a/stackoversight/scraping/stack_overflow.py +++ b/stackoversight/scraping/stack_overflow.py @@ -6,6 +6,10 @@ import requests # Need that mutable tuple my dude from recordclass.mutabletuple import mutabletuple +# For thread lock +import threading +# For logging +import logging class StackOverflow(Site): @@ -19,6 +23,7 @@ class StackOverflow(Site): min_pause = 1 / 30 page_size = 100 + req_table_lock = threading.Lock() req_table = set() fields = {'sort': 'sort', @@ -63,6 +68,7 @@ def __init__(self, client_keys: list): def get_child_links(self, parent_link: str, pause=False, pause_time=None): response = self.process_request(parent_link, pause, pause_time) + # TODO: handle None response key = response[1] request_count = response[2] @@ -74,12 +80,11 @@ def get_child_links(self, parent_link: str, pause=False, pause_time=None): links = [item['link'] for item in response['items']] if quota_max - quota_remaining != request_count: - print(f'Request count for key {key} is off by {abs(quota_max - quota_remaining - request_count)}') - # raise ValueError + logging.warn(f'Request count for key {key} is off by {abs(quota_max - quota_remaining - request_count)}') if not links: - print('The proxy is up but it is failing to pull from the site.') - raise requests.exceptions.ProxyError + logging.critical('Failing to pull from the site, raising exception.') + raise requests.exceptions.RequestException if self.fields['back_off'] in response: self.back_off = response[self.fields['back_off']] @@ -87,14 +92,18 @@ def get_child_links(self, parent_link: str, pause=False, pause_time=None): return links, has_more # as a hook for future needs - def handle_request(self, url: str, key: str): - url = f'{url}&{self.fields["key"]}={key}' + def handle_request(self, link: str, key: str): + link = f'{link}&{self.fields["key"]}={key}' # TODO: have this function return None if it has already been scraped - # if url not in self.req_table: - # self.req_table.add(url) + with self.req_table_lock: + if link not in self.req_table: + self.req_table.add(link) + else: + logging.warn(f'{threading.current_thread().getName()} received a link, {link} that has already been' + f' scraped!') - return requests.get(url) + return requests.get(link) @staticmethod def create_parent_link(method=Methods.question.value, **kwargs): @@ -121,7 +130,7 @@ def init_key(key: str): if response['quota_max'] != StackOverflow.limit: raise ValueError - return mutabletuple(StackOverflow.limit - response['quota_remaining'], key) + return mutabletuple(StackOverflow.limit - response['quota_remaining'] + 1, key) @staticmethod def get_text(response: requests.Response): diff --git a/stackoversight/scraping/thread_executioner.py b/stackoversight/scraping/thread_executioner.py index d9a9755..3c46ff7 100644 --- a/stackoversight/scraping/thread_executioner.py +++ b/stackoversight/scraping/thread_executioner.py @@ -4,6 +4,8 @@ from queue import Queue # For raising error import ctypes +# For logging +import logging class ThreadExecutioner: @@ -13,9 +15,9 @@ def mass_murder(victims: Queue): while True: victim = victims.get(block=True) ThreadExecutioner.murder(victim) + except SystemExit: - print() - # TODO: logging + logging.info(f'System exit exception raised, {threading.current_thread().getName()} successfully killed.') @staticmethod def murder(victim: threading.Thread): @@ -23,23 +25,40 @@ def murder(victim: threading.Thread): if alive: if not ctypes.pythonapi.PyThreadState_SetAsyncExc(victim, ctypes.py_object(SystemExit)): raise ChildProcessError - victim.join() + else: + logging.info(f'{victim.getName()} is dead, no need to kill prematurely.') + victim.join() return alive @staticmethod def execute(target, tasks: Queue, *args): + current_thread_name = threading.current_thread().getName() + hit_queue = Queue() thread_killer = threading.Thread(target=ThreadExecutioner.mass_murder, args=[hit_queue], daemon=True) + thread_killer.setName(f'{current_thread_name}\'s Thread Killer') thread_killer.start() + logging.info(f'New killer, {thread_killer.getName()}, spawned.') + try: + worker_count = 0 + while True: task = tasks.get(block=True) print(task) - threading.Thread(target=target, args=(task, hit_queue, *args), daemon=True) + worker = threading.Thread(target=target, args=(task, hit_queue, *args), daemon=True) + worker.setName(f'{current_thread_name}\'s Worker #{worker_count}') + worker.start() + + logging.info(f'New worker, {worker.getName()}, spawned.') + worker_count += 1 except SystemExit: + logging.info(f'System exit exception raised, {current_thread_name}\'s killer will now be killed.') + ThreadExecutioner.murder(thread_killer) - print('Done scraping parent links') + + logging.info(f'{current_thread_name} successfully killed') From 34f8e6c0dbd01e46fc9b25253af6dcfb6ebcbd57 Mon Sep 17 00:00:00 2001 From: Ash Date: Tue, 23 Jul 2019 20:13:58 +0200 Subject: [PATCH 3/9] Changing to reader writer locks when i get back on after dinner --- stackoversight/scraping/site.py | 84 +++++++++++------------ stackoversight/scraping/stack_overflow.py | 25 ++++++- 2 files changed, 65 insertions(+), 44 deletions(-) diff --git a/stackoversight/scraping/site.py b/stackoversight/scraping/site.py index 99c4e00..9810636 100644 --- a/stackoversight/scraping/site.py +++ b/stackoversight/scraping/site.py @@ -11,63 +11,45 @@ class Site(object): - balancer = None - last_pause_time = None - def __init__(self, sessions: list, timeout_sec: int, limit: int): self.limit = limit self.timeout_sec = timeout_sec - self.back_off = 0 - - if not self.balancer: - self.balancer = SiteBalancer(sessions, timeout_sec, limit) + self.balancer = SiteBalancer(sessions, timeout_sec, limit) def pause(self, pause_time): - if not pause_time and self.limit: - # try to evenly spread the requests out by default - pause_time = self.timeout_sec / self.limit + with self.get_pause_lock(): + if not pause_time and self.limit: + # try to evenly spread the requests out by default + pause_time = self.timeout_sec / self.limit - # this is the minimum wait between requests to not be throttled - min_pause = self.get_min_pause() - if pause_time < min_pause: - pause_time = min_pause - - # can not wait less than the back off field if it is set - if pause_time < self.back_off: - pause_time = self.back_off + # this is the minimum wait between requests to not be throttled + min_pause = self.get_min_pause() + if pause_time < min_pause: + pause_time = min_pause + # can not wait less than the back off field if it is set # returns the field to zero as it should be set only each time it is returned by the api - self.back_off = 0 + back_off = self.clear_back_off() + if pause_time < back_off: + pause_time = back_off - # only wait the diff between the time already elapsed from the last request and the pause_time - if self.last_pause_time: - time_elapsed = time.time() - self.last_pause_time + # only wait the diff between the time already elapsed from the last request and the pause_time + if self.last_pause_time: + time_elapsed = time.time() - self.last_pause_time - # if the elapsed time is longer then no need to wait - if time_elapsed < pause_time: - pause_time -= time_elapsed - else: - pause_time = 0 + # if the elapsed time is longer then no need to wait + if time_elapsed < pause_time: + pause_time -= time_elapsed + else: + pause_time = 0 - # initialize the last_pause_time field and sleep - sleep(pause_time) - self.last_pause_time = time.time() + # initialize the last_pause_time field and sleep + sleep(pause_time) + self.last_pause_time = time.time() return self.last_pause_time - def create_parent_link(self, *args): - raise NotImplementedError - - def get_child_links(self, *args): - raise NotImplementedError - - def handle_request(self, url, session): - raise NotImplementedError - - def get_min_pause(self): - raise NotImplementedError - def process_request(self, url: str, pause=False, pause_time=None): # TODO: Set this up to wait on a signal from a timer thread so that it isn't a busy wait # get the next id to use or wait until one is ready @@ -94,6 +76,24 @@ def process_request(self, url: str, pause=False, pause_time=None): return response, key, request_count + def create_parent_link(self, *args): + raise NotImplementedError + + def get_child_links(self, *args): + raise NotImplementedError + + def handle_request(self, url, session): + raise NotImplementedError + + def get_min_pause(self): + raise NotImplementedError + + def clear_back_off(self): + raise NotImplementedError + + def get_pause_lock(self): + raise NotImplementedError + @staticmethod def cook_soup(response: requests.Response): return BeautifulSoup(response.text, 'html.parser') diff --git a/stackoversight/scraping/stack_overflow.py b/stackoversight/scraping/stack_overflow.py index 3bbf62a..a889904 100644 --- a/stackoversight/scraping/stack_overflow.py +++ b/stackoversight/scraping/stack_overflow.py @@ -23,9 +23,17 @@ class StackOverflow(Site): min_pause = 1 / 30 page_size = 100 + # clean all this shit up with reader writer locks + req_table_lock = threading.Lock() req_table = set() + pause_lock = threading.Lock() + back_off_lock = threading.Lock() + + last_pause_time = None + back_off = 0 + fields = {'sort': 'sort', 'order': 'order', 'tag': 'tagged', @@ -87,11 +95,11 @@ def get_child_links(self, parent_link: str, pause=False, pause_time=None): raise requests.exceptions.RequestException if self.fields['back_off'] in response: - self.back_off = response[self.fields['back_off']] + with self.back_off_lock: + self.back_off = response[self.fields['back_off']] return links, has_more - # as a hook for future needs def handle_request(self, link: str, key: str): link = f'{link}&{self.fields["key"]}={key}' @@ -151,3 +159,16 @@ def get_code(response: requests.Response): @staticmethod def get_min_pause(): return StackOverflow.min_pause + + @staticmethod + def clear_back_off(): + back_off = StackOverflow.back_off + + with StackOverflow.back_off_lock: + StackOverflow.back_off = 0 + + return back_off + + @staticmethod + def get_pause_lock(): + return StackOverflow.pause_lock From da6f7ecaa35cddf182be0715204cabbf9fb001cf Mon Sep 17 00:00:00 2001 From: Ash Date: Wed, 24 Jul 2019 01:23:38 +0200 Subject: [PATCH 4/9] Found and added a good reader-writer lock by Mateusz Kobos --- .../scraping/readers_&_writer_lock.py | 245 ++++++++++++++++++ 1 file changed, 245 insertions(+) create mode 100644 stackoversight/scraping/readers_&_writer_lock.py diff --git a/stackoversight/scraping/readers_&_writer_lock.py b/stackoversight/scraping/readers_&_writer_lock.py new file mode 100644 index 0000000..329f292 --- /dev/null +++ b/stackoversight/scraping/readers_&_writer_lock.py @@ -0,0 +1,245 @@ +import unittest +import threading +import time +import copy + +__author__ = "Mateusz Kobos" + + +class RWLock: + """Synchronization object used in a solution of so-called second + readers-writers problem. In this problem, many readers can simultaneously + access a share, and a writer has an exclusive access to this share. + Additionally, the following constraints should be met: + 1) no reader should be kept waiting if the share is currently opened for + reading unless a writer is also waiting for the share, + 2) no writer should be kept waiting for the share longer than absolutely + necessary. + + The implementation is based on [1, secs. 4.2.2, 4.2.6, 4.2.7] + with a modification -- adding an additional lock (C{self.__readers_queue}) + -- in accordance with [2]. + + Sources: + [1] A.B. Downey: "The little book of semaphores", Version 2.1.5, 2008 + [2] P.J. Courtois, F. Heymans, D.L. Parnas: + "Concurrent Control with 'Readers' and 'Writers'", + Communications of the ACM, 1971 (via [3]) + [3] http://en.wikipedia.org/wiki/Readers-writers_problem + """ + + def __init__(self): + self.__read_switch = _LightSwitch() + self.__write_switch = _LightSwitch() + self.__no_readers = threading.Lock() + self.__no_writers = threading.Lock() + self.__readers_queue = threading.Lock() + """A lock giving an even higher priority to the writer in certain + cases (see [2] for a discussion)""" + + def reader_acquire(self): + self.__readers_queue.acquire() + self.__no_readers.acquire() + self.__read_switch.acquire(self.__no_writers) + self.__no_readers.release() + self.__readers_queue.release() + + def reader_release(self): + self.__read_switch.release(self.__no_writers) + + def writer_acquire(self): + self.__write_switch.acquire(self.__no_readers) + self.__no_writers.acquire() + + def writer_release(self): + self.__no_writers.release() + self.__write_switch.release(self.__no_readers) + + +class _LightSwitch: + """An auxiliary "light switch"-like object. The first thread turns on the + "switch", the last one turns it off (see [1, sec. 4.2.2] for details).""" + + def __init__(self): + self.__counter = 0 + self.__mutex = threading.Lock() + + def acquire(self, lock): + self.__mutex.acquire() + self.__counter += 1 + if self.__counter == 1: + lock.acquire() + self.__mutex.release() + + def release(self, lock): + self.__mutex.acquire() + self.__counter -= 1 + if self.__counter == 0: + lock.release() + self.__mutex.release() + + +class Writer(threading.Thread): + def __init__(self, buffer_, rw_lock, init_sleep_time, sleep_time, to_write): + """ + @param buffer_: common buffer_ shared by the readers and writers + @type buffer_: list + @type rw_lock: L{RWLock} + @param init_sleep_time: sleep time before doing any action + @type init_sleep_time: C{float} + @param sleep_time: sleep time while in critical section + @type sleep_time: C{float} + @param to_write: data that will be appended to the buffer + """ + threading.Thread.__init__(self) + self.__buffer = buffer_ + self.__rw_lock = rw_lock + self.__init_sleep_time = init_sleep_time + self.__sleep_time = sleep_time + self.__to_write = to_write + self.entry_time = None + """Time of entry to the critical section""" + self.exit_time = None + """Time of exit from the critical section""" + + def run(self): + time.sleep(self.__init_sleep_time) + self.__rw_lock.writer_acquire() + self.entry_time = time.time() + time.sleep(self.__sleep_time) + self.__buffer.append(self.__to_write) + self.exit_time = time.time() + self.__rw_lock.writer_release() + + +class Reader(threading.Thread): + def __init__(self, buffer_, rw_lock, init_sleep_time, sleep_time): + """ + @param buffer_: common buffer shared by the readers and writers + @type buffer_: list + @type rw_lock: L{RWLock} + @param init_sleep_time: sleep time before doing any action + @type init_sleep_time: C{float} + @param sleep_time: sleep time while in critical section + @type sleep_time: C{float} + """ + threading.Thread.__init__(self) + self.__buffer = buffer_ + self.__rw_lock = rw_lock + self.__init_sleep_time = init_sleep_time + self.__sleep_time = sleep_time + self.buffer_read = None + """a copy of a the buffer read while in critical section""" + self.entry_time = None + """Time of entry to the critical section""" + self.exit_time = None + """Time of exit from the critical section""" + + def run(self): + time.sleep(self.__init_sleep_time) + self.__rw_lock.reader_acquire() + self.entry_time = time.time() + time.sleep(self.__sleep_time) + self.buffer_read = copy.deepcopy(self.__buffer) + self.exit_time = time.time() + self.__rw_lock.reader_release() + + +class RWLockTestCase(unittest.TestCase): + def test_readers_nonexclusive_access(self): + (buffer_, rw_lock, threads) = self.__init_variables() + + threads.append(Reader(buffer_, rw_lock, 0, 0)) + threads.append(Writer(buffer_, rw_lock, 0.2, 0.4, 1)) + threads.append(Reader(buffer_, rw_lock, 0.3, 0.3)) + threads.append(Reader(buffer_, rw_lock, 0.5, 0)) + + self.__start_and_join_threads(threads) + + # The third reader should enter after the second one but it should + # exit before the second one exits + # (i.e. the readers should be in the critical section + # at the same time) + + self.assertEqual([], threads[0].buffer_read) + self.assertEqual([1], threads[2].buffer_read) + self.assertEqual([1], threads[3].buffer_read) + self.assert_(threads[1].exit_time <= threads[2].entry_time) + self.assert_(threads[2].entry_time <= threads[3].entry_time) + self.assert_(threads[3].exit_time < threads[2].exit_time) + + def test_writers_exclusive_access(self): + (buffer_, rw_lock, threads) = self.__init_variables() + + threads.append(Writer(buffer_, rw_lock, 0, 0.4, 1)) + threads.append(Writer(buffer_, rw_lock, 0.1, 0, 2)) + threads.append(Reader(buffer_, rw_lock, 0.2, 0)) + + self.__start_and_join_threads(threads) + + # The second writer should wait for the first one to exit + + self.assertEqual([1, 2], threads[2].buffer_read) + self.assert_(threads[0].exit_time <= threads[1].entry_time) + self.assert_(threads[1].exit_time <= threads[2].exit_time) + + def test_writer_priority(self): + (buffer_, rw_lock, threads) = self.__init_variables() + + threads.append(Writer(buffer_, rw_lock, 0, 0, 1)) + threads.append(Reader(buffer_, rw_lock, 0.1, 0.4)) + threads.append(Writer(buffer_, rw_lock, 0.2, 0, 2)) + threads.append(Reader(buffer_, rw_lock, 0.3, 0)) + threads.append(Reader(buffer_, rw_lock, 0.3, 0)) + + self.__start_and_join_threads(threads) + + # The second writer should go before the second and the third reader + + self.assertEqual([1], threads[1].buffer_read) + self.assertEqual([1, 2], threads[3].buffer_read) + self.assertEqual([1, 2], threads[4].buffer_read) + self.assert_(threads[0].exit_time < threads[1].entry_time) + self.assert_(threads[1].exit_time <= threads[2].entry_time) + self.assert_(threads[2].exit_time <= threads[3].entry_time) + self.assert_(threads[2].exit_time <= threads[4].entry_time) + + def test_many_writers_priority(self): + (buffer_, rw_lock, threads) = self.__init_variables() + + threads.append(Writer(buffer_, rw_lock, 0, 0, 1)) + threads.append(Reader(buffer_, rw_lock, 0.1, 0.6)) + threads.append(Writer(buffer_, rw_lock, 0.2, 0.1, 2)) + threads.append(Reader(buffer_, rw_lock, 0.3, 0)) + threads.append(Reader(buffer_, rw_lock, 0.4, 0)) + threads.append(Writer(buffer_, rw_lock, 0.5, 0.1, 3)) + + self.__start_and_join_threads(threads) + + # The two last writers should go first -- after the first reader and + # before the second and the third reader + + self.assertEqual([1], threads[1].buffer_read) + self.assertEqual([1, 2, 3], threads[3].buffer_read) + self.assertEqual([1, 2, 3], threads[4].buffer_read) + self.assert_(threads[0].exit_time < threads[1].entry_time) + self.assert_(threads[1].exit_time <= threads[2].entry_time) + self.assert_(threads[1].exit_time <= threads[5].entry_time) + self.assert_(threads[2].exit_time <= threads[3].entry_time) + self.assert_(threads[2].exit_time <= threads[4].entry_time) + self.assert_(threads[5].exit_time <= threads[3].entry_time) + self.assert_(threads[5].exit_time <= threads[4].entry_time) + + @staticmethod + def __init_variables(): + buffer_ = [] + rw_lock = RWLock() + threads = [] + return buffer_, rw_lock, threads + + @staticmethod + def __start_and_join_threads(threads): + for t in threads: + t.start() + for t in threads: + t.join() From 6e31d46253c6d62b514b679e8e67cf6d18f3d23d Mon Sep 17 00:00:00 2001 From: Ash Date: Wed, 24 Jul 2019 11:46:15 +0200 Subject: [PATCH 5/9] Worked my way down to making release_heap and site_balancer multi-thread safe --- ...rs_&_writer_lock.py => read_write_Lock.py} | 25 +++++++++ stackoversight/scraping/release_heap.py | 27 +++++++++- stackoversight/scraping/site.py | 53 +++++++++++-------- stackoversight/scraping/site_balancer.py | 16 ++++-- stackoversight/scraping/stack_overflow.py | 33 ++++++------ 5 files changed, 110 insertions(+), 44 deletions(-) rename stackoversight/scraping/{readers_&_writer_lock.py => read_write_Lock.py} (93%) diff --git a/stackoversight/scraping/readers_&_writer_lock.py b/stackoversight/scraping/read_write_Lock.py similarity index 93% rename from stackoversight/scraping/readers_&_writer_lock.py rename to stackoversight/scraping/read_write_Lock.py index 329f292..3f78727 100644 --- a/stackoversight/scraping/readers_&_writer_lock.py +++ b/stackoversight/scraping/read_write_Lock.py @@ -37,6 +37,9 @@ def __init__(self): """A lock giving an even higher priority to the writer in certain cases (see [2] for a discussion)""" + self.read_lock = ReadLock(self) + self.write_lock = WriteLock(self) + def reader_acquire(self): self.__readers_queue.acquire() self.__no_readers.acquire() @@ -243,3 +246,25 @@ def __start_and_join_threads(threads): t.start() for t in threads: t.join() + + +class ReadLock: + def __init__(self, read_write_lock: RWLock): + self.read_write_lock = read_write_lock + + def __enter__(self): + self.read_write_lock.reader_acquire() + + def __exit__(self, exc_type, exc_val, exc_tb): + self.read_write_lock.reader_release() + + +class WriteLock: + def __int__(self, read_write_lock: RWLock): + self.read_write_lock = read_write_lock + + def __enter__(self): + self.read_write_lock.writer_acquire() + + def __exit__(self, exc_type, exc_val, exc_tb): + self.read_write_lock.writer_release() diff --git a/stackoversight/scraping/release_heap.py b/stackoversight/scraping/release_heap.py index 8254108..0a21043 100644 --- a/stackoversight/scraping/release_heap.py +++ b/stackoversight/scraping/release_heap.py @@ -4,6 +4,8 @@ import threading # For the release queue from queue import Queue +# For writer priority +from stackoversight.scraping.read_write_Lock import RWLock class ReleaseHeap(object): @@ -16,7 +18,10 @@ def __init__(self, elem_list: list, time_sec: int): heapq.heapify(elem_list) self.heap = elem_list self.time_sec = time_sec + + self.heap_lock = RWLock() self.release_queue = Queue() + self.ready = threading.Event() # quick access to pair by it's value self.hash_map = dict([(pair[1], pair) for pair in self.heap]) @@ -25,7 +30,11 @@ def __iter__(self): return self.heap def __next__(self): - return self.heap[0][1] + self.heap_lock.reader_acquire() + ret = self.heap[0][1] + self.heap_lock.reader_release() + + return ret def capture(self): # pop off the top of the heap and increment the first value of the pair @@ -33,6 +42,9 @@ def capture(self): pair[0] += 1 heapq.heappush(self.heap, pair) + # Update ready event + self.update_ready() + # put the value into the queue self.release_queue.put(pair[1]) @@ -48,3 +60,16 @@ def release(self): # beginning value can be non-zero and whatever you choose should be returned to in the end pair[0] -= 1 + + # update heap and ready + heapq.heapify(self.heap) + self.update_ready() + + def update_ready(self): + raise NotImplementedError + + +class ReadyReleaseHeap(ReleaseHeap): + def update_ready(self): + if not self.ready.is_set(): + self.ready.set() diff --git a/stackoversight/scraping/site.py b/stackoversight/scraping/site.py index 9810636..7cd770c 100644 --- a/stackoversight/scraping/site.py +++ b/stackoversight/scraping/site.py @@ -8,41 +8,53 @@ from bs4 import BeautifulSoup # For balancing client requests to the site from stackoversight.scraping.site_balancer import SiteBalancer +# For thread lock +import threading +# For logging +import logging class Site(object): + def __init__(self, sessions: list, timeout_sec: int, limit: int): self.limit = limit self.timeout_sec = timeout_sec + self.pause_lock = threading.Lock() + self.last_pause_time = None + self.balancer = SiteBalancer(sessions, timeout_sec, limit) def pause(self, pause_time): - with self.get_pause_lock(): - if not pause_time and self.limit: - # try to evenly spread the requests out by default - pause_time = self.timeout_sec / self.limit - - # this is the minimum wait between requests to not be throttled - min_pause = self.get_min_pause() - if pause_time < min_pause: - pause_time = min_pause - + if not pause_time and self.limit: + # try to evenly spread the requests out by default + pause_time = self.timeout_sec / self.limit + + # this is the minimum wait between requests to not be throttled + min_pause = self.get_min_pause() + if pause_time < min_pause: + pause_time = min_pause + + # only wait the diff between the time already elapsed from the last request and the pause_time + if self.last_pause_time: + time_elapsed = time.time() - self.last_pause_time + + # if the elapsed time is longer then no need to wait + if time_elapsed < pause_time: + pause_time -= time_elapsed + else: + pause_time = 0 + + with self.pause_lock: # can not wait less than the back off field if it is set # returns the field to zero as it should be set only each time it is returned by the api + # TODO: eventually this back_off field could be tied to the method called, and only threads using that + # method must wait the extra back_off = self.clear_back_off() if pause_time < back_off: pause_time = back_off - # only wait the diff between the time already elapsed from the last request and the pause_time - if self.last_pause_time: - time_elapsed = time.time() - self.last_pause_time - - # if the elapsed time is longer then no need to wait - if time_elapsed < pause_time: - pause_time -= time_elapsed - else: - pause_time = 0 + logging.info(f'back_off in {threading.current_thread().getName()} is being handled') # initialize the last_pause_time field and sleep sleep(pause_time) @@ -91,9 +103,6 @@ def get_min_pause(self): def clear_back_off(self): raise NotImplementedError - def get_pause_lock(self): - raise NotImplementedError - @staticmethod def cook_soup(response: requests.Response): return BeautifulSoup(response.text, 'html.parser') diff --git a/stackoversight/scraping/site_balancer.py b/stackoversight/scraping/site_balancer.py index a780ded..a4eb77d 100644 --- a/stackoversight/scraping/site_balancer.py +++ b/stackoversight/scraping/site_balancer.py @@ -4,17 +4,23 @@ # really just a wrapper for ReleaseHeap, designed for client_ids to be iterated through class SiteBalancer(ReleaseHeap): + def __init__(self, sessions: list, timeout_sec: int, limit=None): super().__init__(sessions, timeout_sec) self.limit = limit # capture signal should be sent after using the client_id, so the call is not included here def __next__(self): - if self.limit and self.heap[0][0] >= self.limit: - raise StopIteration + with self.heap_lock.read_lock: + if self.limit and self.heap[0][0] >= self.limit: + raise StopIteration + + client_id = self.heap[0][1] - client_id = self.heap[0][1] return client_id - def is_ready(self): - return not self.limit or self.heap[0][0] < self.limit + def update_ready(self): + if not self.limit or self.heap[0][0] < self.limit: + self.ready.set() + else: + self.ready.clear() diff --git a/stackoversight/scraping/stack_overflow.py b/stackoversight/scraping/stack_overflow.py index a889904..de62c2d 100644 --- a/stackoversight/scraping/stack_overflow.py +++ b/stackoversight/scraping/stack_overflow.py @@ -23,15 +23,10 @@ class StackOverflow(Site): min_pause = 1 / 30 page_size = 100 - # clean all this shit up with reader writer locks - req_table_lock = threading.Lock() req_table = set() - pause_lock = threading.Lock() back_off_lock = threading.Lock() - - last_pause_time = None back_off = 0 fields = {'sort': 'sort', @@ -95,8 +90,13 @@ def get_child_links(self, parent_link: str, pause=False, pause_time=None): raise requests.exceptions.RequestException if self.fields['back_off'] in response: + logging.info(f'{threading.current_thread().getName()} received a back_off after processing {parent_link}') + + new_back_off = response[self.fields['back_off']] + with self.back_off_lock: - self.back_off = response[self.fields['back_off']] + if self.back_off and self.back_off < new_back_off: + self.back_off = new_back_off return links, has_more @@ -127,7 +127,9 @@ def create_parent_link(method=Methods.question.value, **kwargs): url_fields += f'{StackOverflow.fields[key]}={kwargs[key]}' - return url + url_fields + url += url_fields + logging.info(f'Parent link {url} created.') + return url @staticmethod def init_key(key: str): @@ -136,6 +138,8 @@ def init_key(key: str): f'{StackOverflow.site}&{StackOverflow.fields["key"]}={key}').json() if response['quota_max'] != StackOverflow.limit: + # TODO: later on handle by updating the limit instead + logging.critical('Limit does not match that returned by the site, raising exception.') raise ValueError return mutabletuple(StackOverflow.limit - response['quota_remaining'] + 1, key) @@ -145,7 +149,7 @@ def get_text(response: requests.Response): try: return [element.get_text() for element in Site.cook_soup(response).find_all(attrs={'class': 'post-text'})] except: - # can fail when none are found + logging.debug(f'In thread {threading.current_thread().getName()} no post-text found in response.') return [] @staticmethod @@ -153,7 +157,7 @@ def get_code(response: requests.Response): try: return [element.get_text() for element in Site.cook_soup(response).find_all('code')] except: - # can fail when none are found + logging.debug(f'In thread {threading.current_thread().getName()} no code found in response.') return [] @staticmethod @@ -162,13 +166,10 @@ def get_min_pause(): @staticmethod def clear_back_off(): - back_off = StackOverflow.back_off - with StackOverflow.back_off_lock: - StackOverflow.back_off = 0 + prev_back_off = StackOverflow.back_off - return back_off + if StackOverflow.back_off: + StackOverflow.back_off = 0 - @staticmethod - def get_pause_lock(): - return StackOverflow.pause_lock + return prev_back_off From 214ce0be41809abca0ae4c011bb470a2dd354df3 Mon Sep 17 00:00:00 2001 From: Ash Date: Wed, 24 Jul 2019 13:05:21 +0200 Subject: [PATCH 6/9] Seems to be working, need to go through log and debug some more --- .../scraping/{site.py => abstractsite.py} | 13 +- stackoversight/scraping/read_write_Lock.py | 2 +- stackoversight/scraping/release_heap.py | 41 ++- stackoversight/scraping/scraper.log | 299 ++++++++++++++++++ stackoversight/scraping/site_balancer.py | 19 +- stackoversight/scraping/stack_overflow.py | 19 +- 6 files changed, 354 insertions(+), 39 deletions(-) rename stackoversight/scraping/{site.py => abstractsite.py} (89%) create mode 100644 stackoversight/scraping/scraper.log diff --git a/stackoversight/scraping/site.py b/stackoversight/scraping/abstractsite.py similarity index 89% rename from stackoversight/scraping/site.py rename to stackoversight/scraping/abstractsite.py index 7cd770c..da9dc51 100644 --- a/stackoversight/scraping/site.py +++ b/stackoversight/scraping/abstractsite.py @@ -13,8 +13,10 @@ # For logging import logging +# TODO: fix issues caused by changing is_ready -class Site(object): + +class AbstractSite(object): def __init__(self, sessions: list, timeout_sec: int, limit: int): self.limit = limit @@ -63,11 +65,8 @@ def pause(self, pause_time): return self.last_pause_time def process_request(self, url: str, pause=False, pause_time=None): - # TODO: Set this up to wait on a signal from a timer thread so that it isn't a busy wait # get the next id to use or wait until one is ready - while not self.balancer.is_ready(): - sleep(1) - print("Waiting...") + self.balancer.ready.wait() key = next(self.balancer) @@ -79,8 +78,8 @@ def process_request(self, url: str, pause=False, pause_time=None): try: response = self.handle_request(url, key) except: - print("Make sure Archituethis is running or comment out setting the proxy environment variables!\n" - "Could also be an issue with your token?") + logging.critical(f'In {threading.current_thread().getName()} error while requesting {url}, ' + f'raising exception.') raise requests.exceptions.ProxyError # mark the request as being made diff --git a/stackoversight/scraping/read_write_Lock.py b/stackoversight/scraping/read_write_Lock.py index 3f78727..6123404 100644 --- a/stackoversight/scraping/read_write_Lock.py +++ b/stackoversight/scraping/read_write_Lock.py @@ -260,7 +260,7 @@ def __exit__(self, exc_type, exc_val, exc_tb): class WriteLock: - def __int__(self, read_write_lock: RWLock): + def __init__(self, read_write_lock: RWLock): self.read_write_lock = read_write_lock def __enter__(self): diff --git a/stackoversight/scraping/release_heap.py b/stackoversight/scraping/release_heap.py index 0a21043..f618291 100644 --- a/stackoversight/scraping/release_heap.py +++ b/stackoversight/scraping/release_heap.py @@ -6,9 +6,11 @@ from queue import Queue # For writer priority from stackoversight.scraping.read_write_Lock import RWLock +# For logging +import logging -class ReleaseHeap(object): +class AbstractReleaseHeap(object): """ elem_list must be a list of mutable tuples! the left value needs to be comparable and incrementable/decrementable @@ -20,9 +22,17 @@ def __init__(self, elem_list: list, time_sec: int): self.time_sec = time_sec self.heap_lock = RWLock() + self.queue_lock = threading.Lock() self.release_queue = Queue() self.ready = threading.Event() + # update and make sure the keys are under the limit + self.update_ready() + if not self.ready.is_set(): + logging.critical('The keys used to initialize are already over the request limit!' + 'Can\'t initialize properly, raising exception.') + raise ValueError + # quick access to pair by it's value self.hash_map = dict([(pair[1], pair) for pair in self.heap]) @@ -30,23 +40,24 @@ def __iter__(self): return self.heap def __next__(self): - self.heap_lock.reader_acquire() - ret = self.heap[0][1] - self.heap_lock.reader_release() + with self.heap_lock.read_lock: + ret = self.heap[0][1] return ret def capture(self): # pop off the top of the heap and increment the first value of the pair - pair = heapq.heappop(self.heap) - pair[0] += 1 - heapq.heappush(self.heap, pair) + with self.heap_lock.write_lock: + pair = heapq.heappop(self.heap) + pair[0] += 1 + heapq.heappush(self.heap, pair) # Update ready event self.update_ready() # put the value into the queue - self.release_queue.put(pair[1]) + with self.queue_lock: + self.release_queue.put(pair[1]) # start the timer for release threading.Timer(self.time_sec, self.release).start() @@ -55,21 +66,23 @@ def capture(self): def release(self): # get the id of the next to be released and with that the pair - top_value = self.release_queue.get() + with self.queue_lock: + top_value = self.release_queue.get() pair = self.hash_map[top_value] - # beginning value can be non-zero and whatever you choose should be returned to in the end - pair[0] -= 1 - # update heap and ready - heapq.heapify(self.heap) + with self.heap_lock.write_lock: + # beginning value can be non-zero and whatever you choose should be returned to in the end + pair[0] -= 1 + heapq.heapify(self.heap) + self.update_ready() def update_ready(self): raise NotImplementedError -class ReadyReleaseHeap(ReleaseHeap): +class ReadyReleaseHeap(AbstractReleaseHeap): def update_ready(self): if not self.ready.is_set(): self.ready.set() diff --git a/stackoversight/scraping/scraper.log b/stackoversight/scraping/scraper.log new file mode 100644 index 0000000..4b8d034 --- /dev/null +++ b/stackoversight/scraping/scraper.log @@ -0,0 +1,299 @@ +INFO:root:Parent link https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow created. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 +DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 200 253 +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 +DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 200 254 +INFO:root:Parent link https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow created. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 +DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 200 254 +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 +DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 200 254 +INFO:root:Parent link https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow created. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 +DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 200 254 +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 +DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 200 254 +INFO:root:Starting StackExchange API Manager. +INFO:root:Starting StackOverflow Scraping Manager. +INFO:root:New killer, StackExchange API Manager's Thread Killer, spawned. +INFO:root:New worker, StackExchange API Manager's Worker #0, spawned. +INFO:root:New killer, StackOverflow Scraping Manager's Thread Killer, spawned. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 +DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 200 15743 +INFO:root:New worker, StackOverflow Scraping Manager's Worker #0, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #1, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #2, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #3, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #4, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #5, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #6, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #7, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #8, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #9, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #10, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #11, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #12, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #13, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #14, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #15, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #16, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #17, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #18, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #19, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #20, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #21, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #22, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #23, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #24, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #25, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #26, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #27, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #28, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #29, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #30, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #31, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #32, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #33, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #34, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #35, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #36, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #37, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #38, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #39, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #40, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #41, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #42, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #43, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #44, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #45, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #46, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #47, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #48, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #49, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #50, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #51, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #52, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #53, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #54, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #55, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #56, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #57, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #58, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #59, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #60, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #61, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #62, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #63, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #64, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #65, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #66, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #67, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #68, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #69, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #70, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #71, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #72, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #73, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #74, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #75, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #76, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #77, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #78, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #79, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #80, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #81, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #82, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #83, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #84, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #85, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #86, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #87, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #88, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #89, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #90, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #91, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #92, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #93, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #94, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #95, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #96, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #97, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #98, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #99, spawned. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 +DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 200 15743 +INFO:root:New worker, StackOverflow Scraping Manager's Worker #100, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #101, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #102, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #103, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #104, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #105, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #106, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #107, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #108, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #109, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #110, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #111, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #112, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #113, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #114, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #115, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #116, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #117, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #118, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #119, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #120, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #121, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #122, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #123, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #124, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #125, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #126, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #127, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #128, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #129, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #130, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #131, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #132, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #133, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #134, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #135, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #136, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #137, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #138, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #139, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #140, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #141, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #142, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #143, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #144, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #145, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #146, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #147, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #148, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #149, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #150, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #151, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #152, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #153, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #154, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #155, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #156, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #157, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #158, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #159, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #160, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #161, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #162, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #163, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #164, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #165, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #166, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #167, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #168, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #169, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #170, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #171, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #172, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #173, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #174, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #175, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #176, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #177, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #178, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #179, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #180, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #181, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #182, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #183, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #184, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #185, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #186, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #187, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #188, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #189, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #190, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #191, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #192, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #193, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #194, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #195, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #196, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #197, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #198, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #199, spawned. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/231767/what-does-the-yield-keyword-do&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 301 165 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/231767/what-does-the-yield-keyword-do HTTP/1.1" 200 107024 +INFO:root:Finished with link https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do, now marking StackOverflow Scraping Manager's Worker #0 for death. +INFO:root:StackOverflow Scraping Manager's Worker #0 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/394809/does-python-have-a-ternary-conditional-operator&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 301 182 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/394809/does-python-have-a-ternary-conditional-operator HTTP/1.1" 200 74545 +INFO:root:Finished with link https://stackoverflow.com/questions/394809/does-python-have-a-ternary-conditional-operator, now marking StackOverflow Scraping Manager's Worker #1 for death. +INFO:root:StackOverflow Scraping Manager's Worker #1 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/100003/what-are-metaclasses-in-python&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 301 165 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/100003/what-are-metaclasses-in-python HTTP/1.1" 200 78971 +INFO:root:Finished with link https://stackoverflow.com/questions/100003/what-are-metaclasses-in-python, now marking StackOverflow Scraping Manager's Worker #2 for death. +INFO:root:StackOverflow Scraping Manager's Worker #2 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/419163/what-does-if-name-main-do&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 301 160 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/419163/what-does-if-name-main-do HTTP/1.1" 200 81750 +INFO:root:Finished with link https://stackoverflow.com/questions/419163/what-does-if-name-main-do, now marking StackOverflow Scraping Manager's Worker #3 for death. +INFO:root:StackOverflow Scraping Manager's Worker #3 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 301 189 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions HTTP/1.1" 200 101755 +INFO:root:Finished with link https://stackoverflow.com/questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions, now marking StackOverflow Scraping Manager's Worker #4 for death. +INFO:root:StackOverflow Scraping Manager's Worker #4 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/89228/calling-an-external-command-in-python&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 301 171 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/89228/calling-an-external-command-in-python HTTP/1.1" 200 90584 +INFO:root:Finished with link https://stackoverflow.com/questions/89228/calling-an-external-command-in-python, now marking StackOverflow Scraping Manager's Worker #5 for death. +INFO:root:StackOverflow Scraping Manager's Worker #5 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/38987/how-to-merge-two-dictionaries-in-a-single-expression&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 301 186 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/38987/how-to-merge-two-dictionaries-in-a-single-expression HTTP/1.1" 200 85137 +INFO:root:Finished with link https://stackoverflow.com/questions/38987/how-to-merge-two-dictionaries-in-a-single-expression, now marking StackOverflow Scraping Manager's Worker #6 for death. +INFO:root:StackOverflow Scraping Manager's Worker #6 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/273192/how-can-i-safely-create-a-nested-directory&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 301 177 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/273192/how-can-i-safely-create-a-nested-directory HTTP/1.1" 200 85488 +INFO:root:Finished with link https://stackoverflow.com/questions/273192/how-can-i-safely-create-a-nested-directory, now marking StackOverflow Scraping Manager's Worker #7 for death. +INFO:root:StackOverflow Scraping Manager's Worker #7 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3437059/does-python-have-a-string-contains-substring-method&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 301 187 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3437059/does-python-have-a-string-contains-substring-method HTTP/1.1" 200 54194 +INFO:root:Finished with link https://stackoverflow.com/questions/3437059/does-python-have-a-string-contains-substring-method, now marking StackOverflow Scraping Manager's Worker #8 for death. +INFO:root:StackOverflow Scraping Manager's Worker #8 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3207219/how-do-i-list-all-files-of-a-directory&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 301 174 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3207219/how-do-i-list-all-files-of-a-directory HTTP/1.1" 200 86136 +INFO:root:Finished with link https://stackoverflow.com/questions/3207219/how-do-i-list-all-files-of-a-directory, now marking StackOverflow Scraping Manager's Worker #9 for death. +INFO:root:StackOverflow Scraping Manager's Worker #9 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/613183/how-do-i-sort-a-dictionary-by-value&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 301 170 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/613183/how-do-i-sort-a-dictionary-by-value HTTP/1.1" 200 89124 +INFO:root:Finished with link https://stackoverflow.com/questions/613183/how-do-i-sort-a-dictionary-by-value, now marking StackOverflow Scraping Manager's Worker #10 for death. +INFO:root:StackOverflow Scraping Manager's Worker #10 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/53513/how-do-i-check-if-a-list-is-empty&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 301 167 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/53513/how-do-i-check-if-a-list-is-empty HTTP/1.1" 200 90159 +INFO:root:Finished with link https://stackoverflow.com/questions/53513/how-do-i-check-if-a-list-is-empty, now marking StackOverflow Scraping Manager's Worker #11 for death. +INFO:root:StackOverflow Scraping Manager's Worker #11 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/136097/what-is-the-difference-between-staticmethod-and-classmethod&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 301 194 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/136097/what-is-the-difference-between-staticmethod-and-classmethod HTTP/1.1" 200 74265 +INFO:root:Finished with link https://stackoverflow.com/questions/136097/what-is-the-difference-between-staticmethod-and-classmethod, now marking StackOverflow Scraping Manager's Worker #12 for death. +INFO:root:StackOverflow Scraping Manager's Worker #12 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/522563/accessing-the-index-in-for-loops&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 301 167 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/522563/accessing-the-index-in-for-loops HTTP/1.1" 200 63885 +INFO:root:Finished with link https://stackoverflow.com/questions/522563/accessing-the-index-in-for-loops, now marking StackOverflow Scraping Manager's Worker #13 for death. +INFO:root:StackOverflow Scraping Manager's Worker #13 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 301 204 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend HTTP/1.1" 200 63010 +INFO:root:Finished with link https://stackoverflow.com/questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend, now marking StackOverflow Scraping Manager's Worker #14 for death. +INFO:root:StackOverflow Scraping Manager's Worker #14 is dead, no need to kill prematurely. diff --git a/stackoversight/scraping/site_balancer.py b/stackoversight/scraping/site_balancer.py index a4eb77d..3cb0991 100644 --- a/stackoversight/scraping/site_balancer.py +++ b/stackoversight/scraping/site_balancer.py @@ -1,18 +1,22 @@ # Data structure for balancing -from stackoversight.scraping.release_heap import ReleaseHeap +from stackoversight.scraping.release_heap import AbstractReleaseHeap +# For logging +import logging # really just a wrapper for ReleaseHeap, designed for client_ids to be iterated through -class SiteBalancer(ReleaseHeap): +class SiteBalancer(AbstractReleaseHeap): def __init__(self, sessions: list, timeout_sec: int, limit=None): - super().__init__(sessions, timeout_sec) self.limit = limit + super().__init__(sessions, timeout_sec) # capture signal should be sent after using the client_id, so the call is not included here def __next__(self): with self.heap_lock.read_lock: if self.limit and self.heap[0][0] >= self.limit: + logging.warning(f'Limit reached for client key {self.heap[0][1]}') + raise StopIteration client_id = self.heap[0][1] @@ -20,7 +24,8 @@ def __next__(self): return client_id def update_ready(self): - if not self.limit or self.heap[0][0] < self.limit: - self.ready.set() - else: - self.ready.clear() + with self.heap_lock.read_lock: + if not self.limit or self.heap[0][0] < self.limit: + self.ready.set() + else: + self.ready.clear() diff --git a/stackoversight/scraping/stack_overflow.py b/stackoversight/scraping/stack_overflow.py index de62c2d..c56ac97 100644 --- a/stackoversight/scraping/stack_overflow.py +++ b/stackoversight/scraping/stack_overflow.py @@ -1,5 +1,5 @@ # For basic Site class -from stackoversight.scraping.site import Site +from stackoversight.scraping.abstractsite import AbstractSite # For site tags and sorts from enum import Enum # For proxy exception @@ -12,7 +12,7 @@ import logging -class StackOverflow(Site): +class StackOverflow(AbstractSite): site = 'stackoverflow' api_url = 'https://api.stackexchange.com' api_version = '2.2' @@ -65,9 +65,7 @@ class Tags(Enum): python3 = 'python-3.x' def __init__(self, client_keys: list): - sessions = [self.init_key(key) for key in client_keys] - - super(StackOverflow, self).__init__(sessions, self.timeout_sec, self.limit) + super(StackOverflow, self).__init__([self.init_key(key) for key in client_keys], self.timeout_sec, self.limit) def get_child_links(self, parent_link: str, pause=False, pause_time=None): response = self.process_request(parent_link, pause, pause_time) @@ -83,7 +81,7 @@ def get_child_links(self, parent_link: str, pause=False, pause_time=None): links = [item['link'] for item in response['items']] if quota_max - quota_remaining != request_count: - logging.warn(f'Request count for key {key} is off by {abs(quota_max - quota_remaining - request_count)}') + logging.warning(f'Request count for key {key} is off by {abs(quota_max - quota_remaining - request_count)}') if not links: logging.critical('Failing to pull from the site, raising exception.') @@ -108,8 +106,8 @@ def handle_request(self, link: str, key: str): if link not in self.req_table: self.req_table.add(link) else: - logging.warn(f'{threading.current_thread().getName()} received a link, {link} that has already been' - f' scraped!') + logging.warning(f'{threading.current_thread().getName()} received a link, {link} that has already been' + f' scraped!') return requests.get(link) @@ -147,7 +145,8 @@ def init_key(key: str): @staticmethod def get_text(response: requests.Response): try: - return [element.get_text() for element in Site.cook_soup(response).find_all(attrs={'class': 'post-text'})] + return [element.get_text() for element in + AbstractSite.cook_soup(response).find_all(attrs={'class': 'post-text'})] except: logging.debug(f'In thread {threading.current_thread().getName()} no post-text found in response.') return [] @@ -155,7 +154,7 @@ def get_text(response: requests.Response): @staticmethod def get_code(response: requests.Response): try: - return [element.get_text() for element in Site.cook_soup(response).find_all('code')] + return [element.get_text() for element in AbstractSite.cook_soup(response).find_all('code')] except: logging.debug(f'In thread {threading.current_thread().getName()} no code found in response.') return [] From 9504bc382a933363b343196c34bd543af9b71922 Mon Sep 17 00:00:00 2001 From: Ash Date: Wed, 24 Jul 2019 15:06:26 +0200 Subject: [PATCH 7/9] Processes are working, but having issues with incrementing page --- stackoversight/scraping/scraper.log | 1509 +++++++++++++++++++++++++++ stackoversight/scraping/scraper.py | 13 +- 2 files changed, 1519 insertions(+), 3 deletions(-) diff --git a/stackoversight/scraping/scraper.log b/stackoversight/scraping/scraper.log index 4b8d034..d552cdf 100644 --- a/stackoversight/scraping/scraper.log +++ b/stackoversight/scraping/scraper.log @@ -297,3 +297,1512 @@ DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/25270 DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend HTTP/1.1" 200 63010 INFO:root:Finished with link https://stackoverflow.com/questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend, now marking StackOverflow Scraping Manager's Worker #14 for death. INFO:root:StackOverflow Scraping Manager's Worker #14 is dead, no need to kill prematurely. +INFO:root:Parent link https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow created. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 +DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 200 255 +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 +DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 200 255 +INFO:root:Starting StackExchange API Manager. +INFO:root:Starting StackOverflow Scraping Manager. +INFO:root:New killer, StackExchange API Manager's Thread Killer, spawned. +INFO:root:New killer, StackOverflow Scraping Manager's Thread Killer, spawned. +INFO:root:New worker, StackExchange API Manager's Worker #0, spawned for task https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 +DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 200 15752 +INFO:root:New worker, StackOverflow Scraping Manager's Worker #0, spawned for task https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #1, spawned for task https://stackoverflow.com/questions/394809/does-python-have-a-ternary-conditional-operator. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #2, spawned for task https://stackoverflow.com/questions/100003/what-are-metaclasses-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #3, spawned for task https://stackoverflow.com/questions/419163/what-does-if-name-main-do. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #4, spawned for task https://stackoverflow.com/questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #5, spawned for task https://stackoverflow.com/questions/89228/calling-an-external-command-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #6, spawned for task https://stackoverflow.com/questions/38987/how-to-merge-two-dictionaries-in-a-single-expression. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #7, spawned for task https://stackoverflow.com/questions/273192/how-can-i-safely-create-a-nested-directory. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #8, spawned for task https://stackoverflow.com/questions/3437059/does-python-have-a-string-contains-substring-method. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #9, spawned for task https://stackoverflow.com/questions/3207219/how-do-i-list-all-files-of-a-directory. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #10, spawned for task https://stackoverflow.com/questions/613183/how-do-i-sort-a-dictionary-by-value. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #11, spawned for task https://stackoverflow.com/questions/53513/how-do-i-check-if-a-list-is-empty. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #12, spawned for task https://stackoverflow.com/questions/136097/what-is-the-difference-between-staticmethod-and-classmethod. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #13, spawned for task https://stackoverflow.com/questions/522563/accessing-the-index-in-for-loops. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #14, spawned for task https://stackoverflow.com/questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #15, spawned for task https://stackoverflow.com/questions/509211/understanding-slice-notation. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #16, spawned for task https://stackoverflow.com/questions/423379/using-global-variables-in-a-function. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #17, spawned for task https://stackoverflow.com/questions/3294889/iterating-over-dictionaries-using-for-loops. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #18, spawned for task https://stackoverflow.com/questions/176918/finding-the-index-of-an-item-given-a-list-containing-it-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #19, spawned for task https://stackoverflow.com/questions/952914/how-to-make-a-flat-list-out-of-list-of-lists. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #20, spawned for task https://stackoverflow.com/questions/1602934/check-if-a-given-key-already-exists-in-a-dictionary. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #21, spawned for task https://stackoverflow.com/questions/739654/how-to-make-a-chain-of-function-decorators. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #22, spawned for task https://stackoverflow.com/questions/510348/how-can-i-make-a-time-delay-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #23, spawned for task https://stackoverflow.com/questions/415511/how-to-get-the-current-time-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #24, spawned for task https://stackoverflow.com/questions/1436703/difference-between-str-and-repr. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #25, spawned for task https://stackoverflow.com/questions/4750806/how-do-i-install-pip-on-windows. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #26, spawned for task https://stackoverflow.com/questions/6470428/catch-multiple-exceptions-in-one-line-except-block. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #27, spawned for task https://stackoverflow.com/questions/986006/how-do-i-pass-a-variable-by-reference. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #28, spawned for task https://stackoverflow.com/questions/1132941/least-astonishment-and-the-mutable-default-argument. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #29, spawned for task https://stackoverflow.com/questions/1024847/add-new-keys-to-a-dictionary. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #30, spawned for task https://stackoverflow.com/questions/576169/understanding-python-super-with-init-methods. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #31, spawned for task https://stackoverflow.com/questions/2612802/how-to-clone-or-copy-a-list. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #32, spawned for task https://stackoverflow.com/questions/101754/is-there-a-way-to-run-python-on-android. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #33, spawned for task https://stackoverflow.com/questions/1720421/how-do-i-concatenate-two-lists-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #34, spawned for task https://stackoverflow.com/questions/379906/how-do-i-parse-a-string-to-a-float-or-int. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #35, spawned for task https://stackoverflow.com/questions/3277503/how-to-read-a-file-line-by-line-into-a-list. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #36, spawned for task https://stackoverflow.com/questions/36901/what-does-double-star-asterisk-and-star-asterisk-do-for-parameters. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #37, spawned for task https://stackoverflow.com/questions/123198/how-do-i-copy-a-file-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #38, spawned for task https://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #39, spawned for task https://stackoverflow.com/questions/2052390/manually-raising-throwing-an-exception-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #40, spawned for task https://stackoverflow.com/questions/466345/converting-string-into-datetime. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #41, spawned for task https://stackoverflow.com/questions/663171/how-to-substring-a-string-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #42, spawned for task https://stackoverflow.com/questions/448271/what-is-init-py-for. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #43, spawned for task https://stackoverflow.com/questions/5137497/find-current-directory-and-files-directory. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #44, spawned for task https://stackoverflow.com/questions/287871/how-to-print-colored-text-in-terminal-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #45, spawned for task https://stackoverflow.com/questions/6797984/how-do-i-lowercase-a-string-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #46, spawned for task https://stackoverflow.com/questions/1712227/how-do-i-get-the-number-of-elements-in-a-list. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #47, spawned for task https://stackoverflow.com/questions/6996603/delete-a-file-or-folder. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #48, spawned for task https://stackoverflow.com/questions/606191/convert-bytes-to-a-string. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #49, spawned for task https://stackoverflow.com/questions/68645/are-static-class-variables-possible-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #50, spawned for task https://stackoverflow.com/questions/930397/getting-the-last-element-of-a-list. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #51, spawned for task https://stackoverflow.com/questions/2720014/how-to-upgrade-all-python-packages-with-pip. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #52, spawned for task https://stackoverflow.com/questions/30081275/why-is-1000000000000000-in-range1000000000000001-so-fast-in-python-3. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #53, spawned for task https://stackoverflow.com/questions/60208/replacements-for-switch-statement-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #54, spawned for task https://stackoverflow.com/questions/4906977/how-to-access-environment-variable-values. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #55, spawned for task https://stackoverflow.com/questions/9371238/why-is-reading-lines-from-stdin-much-slower-in-c-than-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #56, spawned for task https://stackoverflow.com/questions/17271319/how-do-i-install-pip-on-macos-or-os-x. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #57, spawned for task https://stackoverflow.com/questions/493386/how-to-print-without-newline-or-space. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #58, spawned for task https://stackoverflow.com/questions/72899/how-do-i-sort-a-list-of-dictionaries-by-a-value-of-the-dictionary. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #59, spawned for task https://stackoverflow.com/questions/2225038/determine-the-type-of-an-object. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #60, spawned for task https://stackoverflow.com/questions/493819/python-join-why-is-it-string-joinlist-instead-of-list-joinstring. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #61, spawned for task https://stackoverflow.com/questions/735975/static-methods-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #62, spawned for task https://stackoverflow.com/questions/306400/how-to-randomly-select-an-item-from-a-list. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #63, spawned for task https://stackoverflow.com/questions/332289/how-do-you-change-the-size-of-figures-drawn-with-matplotlib. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #64, spawned for task https://stackoverflow.com/questions/275018/how-can-i-remove-a-trailing-newline. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #65, spawned for task https://stackoverflow.com/questions/12179271/meaning-of-classmethod-and-staticmethod-for-beginner. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #66, spawned for task https://stackoverflow.com/questions/3061/calling-a-function-of-a-module-by-using-its-name-a-string. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #67, spawned for task https://stackoverflow.com/questions/11346283/renaming-columns-in-pandas. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #68, spawned for task https://stackoverflow.com/questions/354038/how-do-i-check-if-a-string-is-a-number-float. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #69, spawned for task https://stackoverflow.com/questions/17071871/select-rows-from-a-dataframe-based-on-values-in-a-column-in-pandas. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #70, spawned for task https://stackoverflow.com/questions/101268/hidden-features-of-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #71, spawned for task https://stackoverflow.com/questions/455612/limiting-floats-to-two-decimal-points. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #72, spawned for task https://stackoverflow.com/questions/11277432/how-to-remove-a-key-from-a-python-dictionary. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #73, spawned for task https://stackoverflow.com/questions/610883/how-to-know-if-an-object-has-an-attribute-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #74, spawned for task https://stackoverflow.com/questions/4706499/how-do-you-append-to-a-file-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #75, spawned for task https://stackoverflow.com/questions/2835559/why-cant-python-parse-this-json-data. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #76, spawned for task https://stackoverflow.com/questions/2600191/how-can-i-count-the-occurrences-of-a-list-item. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #77, spawned for task https://stackoverflow.com/questions/990754/how-to-leave-exit-deactivate-a-python-virtualenv. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #78, spawned for task https://stackoverflow.com/questions/1450393/how-do-you-read-from-stdin. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #79, spawned for task https://stackoverflow.com/questions/3394835/use-of-args-and-kwargs. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #80, spawned for task https://stackoverflow.com/questions/402504/how-to-determine-a-python-variables-type. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #81, spawned for task https://stackoverflow.com/questions/16476924/how-to-iterate-over-rows-in-a-dataframe-in-pandas. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #82, spawned for task https://stackoverflow.com/questions/5082452/string-formatting-vs-format. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #83, spawned for task https://stackoverflow.com/questions/627435/how-to-remove-an-element-from-a-list-by-index. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #84, spawned for task https://stackoverflow.com/questions/931092/reverse-a-string-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #85, spawned for task https://stackoverflow.com/questions/961632/converting-integer-to-string. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #86, spawned for task https://stackoverflow.com/questions/510972/getting-the-class-name-of-an-instance. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #87, spawned for task https://stackoverflow.com/questions/5466451/how-can-i-print-literal-curly-brace-characters-in-python-string-and-also-use-fo. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #88, spawned for task https://stackoverflow.com/questions/339007/nicest-way-to-pad-zeroes-to-a-string. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #89, spawned for task https://stackoverflow.com/questions/2257441/random-string-generation-with-upper-case-letters-and-digits. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #90, spawned for task https://stackoverflow.com/questions/9573244/how-to-check-if-the-string-is-empty. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #91, spawned for task https://stackoverflow.com/questions/1747817/create-a-dictionary-with-list-comprehension. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #92, spawned for task https://stackoverflow.com/questions/9942594/unicodeencodeerror-ascii-codec-cant-encode-character-u-xa0-in-position-20. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #93, spawned for task https://stackoverflow.com/questions/5574702/how-to-print-to-stderr-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #94, spawned for task https://stackoverflow.com/questions/2846653/how-to-use-threading-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #95, spawned for task https://stackoverflow.com/questions/3996904/generate-random-integers-between-0-and-9. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #96, spawned for task https://stackoverflow.com/questions/5844672/delete-an-element-from-a-dictionary. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #97, spawned for task https://stackoverflow.com/questions/1301346/what-is-the-meaning-of-a-single-and-a-double-underscore-before-an-object-name. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #98, spawned for task https://stackoverflow.com/questions/36932/how-can-i-represent-an-enum-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #99, spawned for task https://stackoverflow.com/questions/582336/how-can-you-profile-a-python-script. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/231767/what-does-the-yield-keyword-do&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 165 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/231767/what-does-the-yield-keyword-do HTTP/1.1" 200 106828 +INFO:root:Finished with link https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do, now marking StackOverflow Scraping Manager's Worker #0 for death. +INFO:root:StackOverflow Scraping Manager's Worker #0 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 +DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 200 15752 +INFO:root:New worker, StackOverflow Scraping Manager's Worker #100, spawned for task https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #101, spawned for task https://stackoverflow.com/questions/394809/does-python-have-a-ternary-conditional-operator. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #102, spawned for task https://stackoverflow.com/questions/100003/what-are-metaclasses-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #103, spawned for task https://stackoverflow.com/questions/419163/what-does-if-name-main-do. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #104, spawned for task https://stackoverflow.com/questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #105, spawned for task https://stackoverflow.com/questions/89228/calling-an-external-command-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #106, spawned for task https://stackoverflow.com/questions/38987/how-to-merge-two-dictionaries-in-a-single-expression. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #107, spawned for task https://stackoverflow.com/questions/273192/how-can-i-safely-create-a-nested-directory. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #108, spawned for task https://stackoverflow.com/questions/3437059/does-python-have-a-string-contains-substring-method. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #109, spawned for task https://stackoverflow.com/questions/3207219/how-do-i-list-all-files-of-a-directory. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #110, spawned for task https://stackoverflow.com/questions/613183/how-do-i-sort-a-dictionary-by-value. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #111, spawned for task https://stackoverflow.com/questions/53513/how-do-i-check-if-a-list-is-empty. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #112, spawned for task https://stackoverflow.com/questions/136097/what-is-the-difference-between-staticmethod-and-classmethod. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #113, spawned for task https://stackoverflow.com/questions/522563/accessing-the-index-in-for-loops. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #114, spawned for task https://stackoverflow.com/questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #115, spawned for task https://stackoverflow.com/questions/509211/understanding-slice-notation. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #116, spawned for task https://stackoverflow.com/questions/423379/using-global-variables-in-a-function. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #117, spawned for task https://stackoverflow.com/questions/3294889/iterating-over-dictionaries-using-for-loops. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #118, spawned for task https://stackoverflow.com/questions/176918/finding-the-index-of-an-item-given-a-list-containing-it-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #119, spawned for task https://stackoverflow.com/questions/952914/how-to-make-a-flat-list-out-of-list-of-lists. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #120, spawned for task https://stackoverflow.com/questions/1602934/check-if-a-given-key-already-exists-in-a-dictionary. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #121, spawned for task https://stackoverflow.com/questions/739654/how-to-make-a-chain-of-function-decorators. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #122, spawned for task https://stackoverflow.com/questions/510348/how-can-i-make-a-time-delay-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #123, spawned for task https://stackoverflow.com/questions/415511/how-to-get-the-current-time-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #124, spawned for task https://stackoverflow.com/questions/1436703/difference-between-str-and-repr. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #125, spawned for task https://stackoverflow.com/questions/4750806/how-do-i-install-pip-on-windows. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #126, spawned for task https://stackoverflow.com/questions/6470428/catch-multiple-exceptions-in-one-line-except-block. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #127, spawned for task https://stackoverflow.com/questions/986006/how-do-i-pass-a-variable-by-reference. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #128, spawned for task https://stackoverflow.com/questions/1132941/least-astonishment-and-the-mutable-default-argument. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #129, spawned for task https://stackoverflow.com/questions/1024847/add-new-keys-to-a-dictionary. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #130, spawned for task https://stackoverflow.com/questions/576169/understanding-python-super-with-init-methods. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #131, spawned for task https://stackoverflow.com/questions/2612802/how-to-clone-or-copy-a-list. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #132, spawned for task https://stackoverflow.com/questions/101754/is-there-a-way-to-run-python-on-android. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #133, spawned for task https://stackoverflow.com/questions/1720421/how-do-i-concatenate-two-lists-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #134, spawned for task https://stackoverflow.com/questions/379906/how-do-i-parse-a-string-to-a-float-or-int. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #135, spawned for task https://stackoverflow.com/questions/3277503/how-to-read-a-file-line-by-line-into-a-list. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #136, spawned for task https://stackoverflow.com/questions/36901/what-does-double-star-asterisk-and-star-asterisk-do-for-parameters. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #137, spawned for task https://stackoverflow.com/questions/123198/how-do-i-copy-a-file-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #138, spawned for task https://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #139, spawned for task https://stackoverflow.com/questions/2052390/manually-raising-throwing-an-exception-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #140, spawned for task https://stackoverflow.com/questions/466345/converting-string-into-datetime. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #141, spawned for task https://stackoverflow.com/questions/663171/how-to-substring-a-string-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #142, spawned for task https://stackoverflow.com/questions/448271/what-is-init-py-for. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #143, spawned for task https://stackoverflow.com/questions/5137497/find-current-directory-and-files-directory. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #144, spawned for task https://stackoverflow.com/questions/287871/how-to-print-colored-text-in-terminal-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #145, spawned for task https://stackoverflow.com/questions/6797984/how-do-i-lowercase-a-string-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #146, spawned for task https://stackoverflow.com/questions/1712227/how-do-i-get-the-number-of-elements-in-a-list. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #147, spawned for task https://stackoverflow.com/questions/6996603/delete-a-file-or-folder. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #148, spawned for task https://stackoverflow.com/questions/606191/convert-bytes-to-a-string. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #149, spawned for task https://stackoverflow.com/questions/68645/are-static-class-variables-possible-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #150, spawned for task https://stackoverflow.com/questions/930397/getting-the-last-element-of-a-list. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #151, spawned for task https://stackoverflow.com/questions/2720014/how-to-upgrade-all-python-packages-with-pip. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #152, spawned for task https://stackoverflow.com/questions/30081275/why-is-1000000000000000-in-range1000000000000001-so-fast-in-python-3. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #153, spawned for task https://stackoverflow.com/questions/60208/replacements-for-switch-statement-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #154, spawned for task https://stackoverflow.com/questions/4906977/how-to-access-environment-variable-values. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #155, spawned for task https://stackoverflow.com/questions/9371238/why-is-reading-lines-from-stdin-much-slower-in-c-than-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #156, spawned for task https://stackoverflow.com/questions/17271319/how-do-i-install-pip-on-macos-or-os-x. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #157, spawned for task https://stackoverflow.com/questions/493386/how-to-print-without-newline-or-space. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #158, spawned for task https://stackoverflow.com/questions/72899/how-do-i-sort-a-list-of-dictionaries-by-a-value-of-the-dictionary. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #159, spawned for task https://stackoverflow.com/questions/2225038/determine-the-type-of-an-object. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #160, spawned for task https://stackoverflow.com/questions/493819/python-join-why-is-it-string-joinlist-instead-of-list-joinstring. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #161, spawned for task https://stackoverflow.com/questions/735975/static-methods-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #162, spawned for task https://stackoverflow.com/questions/306400/how-to-randomly-select-an-item-from-a-list. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #163, spawned for task https://stackoverflow.com/questions/332289/how-do-you-change-the-size-of-figures-drawn-with-matplotlib. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #164, spawned for task https://stackoverflow.com/questions/275018/how-can-i-remove-a-trailing-newline. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #165, spawned for task https://stackoverflow.com/questions/12179271/meaning-of-classmethod-and-staticmethod-for-beginner. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #166, spawned for task https://stackoverflow.com/questions/3061/calling-a-function-of-a-module-by-using-its-name-a-string. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #167, spawned for task https://stackoverflow.com/questions/11346283/renaming-columns-in-pandas. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #168, spawned for task https://stackoverflow.com/questions/354038/how-do-i-check-if-a-string-is-a-number-float. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #169, spawned for task https://stackoverflow.com/questions/17071871/select-rows-from-a-dataframe-based-on-values-in-a-column-in-pandas. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #170, spawned for task https://stackoverflow.com/questions/101268/hidden-features-of-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #171, spawned for task https://stackoverflow.com/questions/455612/limiting-floats-to-two-decimal-points. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #172, spawned for task https://stackoverflow.com/questions/11277432/how-to-remove-a-key-from-a-python-dictionary. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #173, spawned for task https://stackoverflow.com/questions/610883/how-to-know-if-an-object-has-an-attribute-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #174, spawned for task https://stackoverflow.com/questions/4706499/how-do-you-append-to-a-file-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #175, spawned for task https://stackoverflow.com/questions/2835559/why-cant-python-parse-this-json-data. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #176, spawned for task https://stackoverflow.com/questions/2600191/how-can-i-count-the-occurrences-of-a-list-item. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #177, spawned for task https://stackoverflow.com/questions/990754/how-to-leave-exit-deactivate-a-python-virtualenv. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #178, spawned for task https://stackoverflow.com/questions/1450393/how-do-you-read-from-stdin. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #179, spawned for task https://stackoverflow.com/questions/3394835/use-of-args-and-kwargs. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #180, spawned for task https://stackoverflow.com/questions/402504/how-to-determine-a-python-variables-type. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #181, spawned for task https://stackoverflow.com/questions/16476924/how-to-iterate-over-rows-in-a-dataframe-in-pandas. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #182, spawned for task https://stackoverflow.com/questions/5082452/string-formatting-vs-format. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #183, spawned for task https://stackoverflow.com/questions/627435/how-to-remove-an-element-from-a-list-by-index. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #184, spawned for task https://stackoverflow.com/questions/931092/reverse-a-string-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #185, spawned for task https://stackoverflow.com/questions/961632/converting-integer-to-string. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #186, spawned for task https://stackoverflow.com/questions/510972/getting-the-class-name-of-an-instance. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #187, spawned for task https://stackoverflow.com/questions/5466451/how-can-i-print-literal-curly-brace-characters-in-python-string-and-also-use-fo. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #188, spawned for task https://stackoverflow.com/questions/339007/nicest-way-to-pad-zeroes-to-a-string. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #189, spawned for task https://stackoverflow.com/questions/2257441/random-string-generation-with-upper-case-letters-and-digits. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #190, spawned for task https://stackoverflow.com/questions/9573244/how-to-check-if-the-string-is-empty. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #191, spawned for task https://stackoverflow.com/questions/1747817/create-a-dictionary-with-list-comprehension. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #192, spawned for task https://stackoverflow.com/questions/9942594/unicodeencodeerror-ascii-codec-cant-encode-character-u-xa0-in-position-20. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #193, spawned for task https://stackoverflow.com/questions/5574702/how-to-print-to-stderr-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #194, spawned for task https://stackoverflow.com/questions/2846653/how-to-use-threading-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #195, spawned for task https://stackoverflow.com/questions/3996904/generate-random-integers-between-0-and-9. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #196, spawned for task https://stackoverflow.com/questions/5844672/delete-an-element-from-a-dictionary. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #197, spawned for task https://stackoverflow.com/questions/1301346/what-is-the-meaning-of-a-single-and-a-double-underscore-before-an-object-name. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #198, spawned for task https://stackoverflow.com/questions/36932/how-can-i-represent-an-enum-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #199, spawned for task https://stackoverflow.com/questions/582336/how-can-you-profile-a-python-script. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/394809/does-python-have-a-ternary-conditional-operator&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 182 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/394809/does-python-have-a-ternary-conditional-operator HTTP/1.1" 200 74919 +INFO:root:Finished with link https://stackoverflow.com/questions/394809/does-python-have-a-ternary-conditional-operator, now marking StackOverflow Scraping Manager's Worker #1 for death. +INFO:root:StackOverflow Scraping Manager's Worker #1 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/100003/what-are-metaclasses-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 165 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/100003/what-are-metaclasses-in-python HTTP/1.1" 200 78821 +INFO:root:Finished with link https://stackoverflow.com/questions/100003/what-are-metaclasses-in-python, now marking StackOverflow Scraping Manager's Worker #2 for death. +INFO:root:StackOverflow Scraping Manager's Worker #2 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/419163/what-does-if-name-main-do&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 160 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/419163/what-does-if-name-main-do HTTP/1.1" 200 81778 +INFO:root:Finished with link https://stackoverflow.com/questions/419163/what-does-if-name-main-do, now marking StackOverflow Scraping Manager's Worker #3 for death. +INFO:root:StackOverflow Scraping Manager's Worker #3 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 189 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions HTTP/1.1" 200 101706 +INFO:root:Finished with link https://stackoverflow.com/questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions, now marking StackOverflow Scraping Manager's Worker #4 for death. +INFO:root:StackOverflow Scraping Manager's Worker #4 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/89228/calling-an-external-command-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 171 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/89228/calling-an-external-command-in-python HTTP/1.1" 200 90507 +INFO:root:Finished with link https://stackoverflow.com/questions/89228/calling-an-external-command-in-python, now marking StackOverflow Scraping Manager's Worker #5 for death. +INFO:root:StackOverflow Scraping Manager's Worker #5 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/38987/how-to-merge-two-dictionaries-in-a-single-expression&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 186 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/38987/how-to-merge-two-dictionaries-in-a-single-expression HTTP/1.1" 200 85275 +INFO:root:Finished with link https://stackoverflow.com/questions/38987/how-to-merge-two-dictionaries-in-a-single-expression, now marking StackOverflow Scraping Manager's Worker #6 for death. +INFO:root:StackOverflow Scraping Manager's Worker #6 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/273192/how-can-i-safely-create-a-nested-directory&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 177 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/273192/how-can-i-safely-create-a-nested-directory HTTP/1.1" 200 85451 +INFO:root:Finished with link https://stackoverflow.com/questions/273192/how-can-i-safely-create-a-nested-directory, now marking StackOverflow Scraping Manager's Worker #7 for death. +INFO:root:StackOverflow Scraping Manager's Worker #7 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3437059/does-python-have-a-string-contains-substring-method&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 187 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3437059/does-python-have-a-string-contains-substring-method HTTP/1.1" 200 54009 +INFO:root:Finished with link https://stackoverflow.com/questions/3437059/does-python-have-a-string-contains-substring-method, now marking StackOverflow Scraping Manager's Worker #8 for death. +INFO:root:StackOverflow Scraping Manager's Worker #8 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3207219/how-do-i-list-all-files-of-a-directory&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 174 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3207219/how-do-i-list-all-files-of-a-directory HTTP/1.1" 200 86246 +INFO:root:Finished with link https://stackoverflow.com/questions/3207219/how-do-i-list-all-files-of-a-directory, now marking StackOverflow Scraping Manager's Worker #9 for death. +INFO:root:StackOverflow Scraping Manager's Worker #9 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/613183/how-do-i-sort-a-dictionary-by-value&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 170 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/613183/how-do-i-sort-a-dictionary-by-value HTTP/1.1" 200 89153 +INFO:root:Finished with link https://stackoverflow.com/questions/613183/how-do-i-sort-a-dictionary-by-value, now marking StackOverflow Scraping Manager's Worker #10 for death. +INFO:root:StackOverflow Scraping Manager's Worker #10 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/53513/how-do-i-check-if-a-list-is-empty&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 167 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/53513/how-do-i-check-if-a-list-is-empty HTTP/1.1" 200 90370 +INFO:root:Finished with link https://stackoverflow.com/questions/53513/how-do-i-check-if-a-list-is-empty, now marking StackOverflow Scraping Manager's Worker #11 for death. +INFO:root:StackOverflow Scraping Manager's Worker #11 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/136097/what-is-the-difference-between-staticmethod-and-classmethod&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 194 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/136097/what-is-the-difference-between-staticmethod-and-classmethod HTTP/1.1" 200 74198 +INFO:root:Finished with link https://stackoverflow.com/questions/136097/what-is-the-difference-between-staticmethod-and-classmethod, now marking StackOverflow Scraping Manager's Worker #12 for death. +INFO:root:StackOverflow Scraping Manager's Worker #12 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/522563/accessing-the-index-in-for-loops&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 167 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/522563/accessing-the-index-in-for-loops HTTP/1.1" 200 64041 +INFO:root:Finished with link https://stackoverflow.com/questions/522563/accessing-the-index-in-for-loops, now marking StackOverflow Scraping Manager's Worker #13 for death. +INFO:root:StackOverflow Scraping Manager's Worker #13 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 204 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend HTTP/1.1" 200 63244 +INFO:root:Finished with link https://stackoverflow.com/questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend, now marking StackOverflow Scraping Manager's Worker #14 for death. +INFO:root:StackOverflow Scraping Manager's Worker #14 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/509211/understanding-slice-notation&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 163 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/509211/understanding-slice-notation HTTP/1.1" 200 91692 +INFO:root:Finished with link https://stackoverflow.com/questions/509211/understanding-slice-notation, now marking StackOverflow Scraping Manager's Worker #15 for death. +INFO:root:StackOverflow Scraping Manager's Worker #15 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/423379/using-global-variables-in-a-function&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 171 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/423379/using-global-variables-in-a-function HTTP/1.1" 200 64117 +INFO:root:Finished with link https://stackoverflow.com/questions/423379/using-global-variables-in-a-function, now marking StackOverflow Scraping Manager's Worker #16 for death. +INFO:root:StackOverflow Scraping Manager's Worker #16 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3294889/iterating-over-dictionaries-using-for-loops&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 179 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3294889/iterating-over-dictionaries-using-for-loops HTTP/1.1" 200 47726 +INFO:root:Finished with link https://stackoverflow.com/questions/3294889/iterating-over-dictionaries-using-for-loops, now marking StackOverflow Scraping Manager's Worker #17 for death. +INFO:root:StackOverflow Scraping Manager's Worker #17 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/176918/finding-the-index-of-an-item-given-a-list-containing-it-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 200 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/176918/finding-the-index-of-an-item-given-a-list-containing-it-in-python HTTP/1.1" 200 75598 +INFO:root:Finished with link https://stackoverflow.com/questions/176918/finding-the-index-of-an-item-given-a-list-containing-it-in-python, now marking StackOverflow Scraping Manager's Worker #18 for death. +INFO:root:StackOverflow Scraping Manager's Worker #18 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/952914/how-to-make-a-flat-list-out-of-list-of-lists&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 179 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/952914/how-to-make-a-flat-list-out-of-list-of-lists HTTP/1.1" 200 93122 +INFO:root:Finished with link https://stackoverflow.com/questions/952914/how-to-make-a-flat-list-out-of-list-of-lists, now marking StackOverflow Scraping Manager's Worker #19 for death. +INFO:root:StackOverflow Scraping Manager's Worker #19 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1602934/check-if-a-given-key-already-exists-in-a-dictionary&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 187 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1602934/check-if-a-given-key-already-exists-in-a-dictionary HTTP/1.1" 200 65775 +INFO:root:Finished with link https://stackoverflow.com/questions/1602934/check-if-a-given-key-already-exists-in-a-dictionary, now marking StackOverflow Scraping Manager's Worker #20 for death. +INFO:root:StackOverflow Scraping Manager's Worker #20 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/739654/how-to-make-a-chain-of-function-decorators&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 177 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/739654/how-to-make-a-chain-of-function-decorators HTTP/1.1" 200 78642 +INFO:root:Finished with link https://stackoverflow.com/questions/739654/how-to-make-a-chain-of-function-decorators, now marking StackOverflow Scraping Manager's Worker #21 for death. +INFO:root:StackOverflow Scraping Manager's Worker #21 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/510348/how-can-i-make-a-time-delay-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 172 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/510348/how-can-i-make-a-time-delay-in-python HTTP/1.1" 200 51042 +INFO:root:Finished with link https://stackoverflow.com/questions/510348/how-can-i-make-a-time-delay-in-python, now marking StackOverflow Scraping Manager's Worker #22 for death. +INFO:root:StackOverflow Scraping Manager's Worker #22 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/415511/how-to-get-the-current-time-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 172 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/415511/how-to-get-the-current-time-in-python HTTP/1.1" 200 74235 +INFO:root:Finished with link https://stackoverflow.com/questions/415511/how-to-get-the-current-time-in-python, now marking StackOverflow Scraping Manager's Worker #23 for death. +INFO:root:StackOverflow Scraping Manager's Worker #23 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1436703/difference-between-str-and-repr&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 167 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1436703/difference-between-str-and-repr HTTP/1.1" 200 71677 +INFO:root:Finished with link https://stackoverflow.com/questions/1436703/difference-between-str-and-repr, now marking StackOverflow Scraping Manager's Worker #24 for death. +INFO:root:StackOverflow Scraping Manager's Worker #24 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/4750806/how-do-i-install-pip-on-windows&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 167 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/4750806/how-do-i-install-pip-on-windows HTTP/1.1" 200 94631 +INFO:root:Finished with link https://stackoverflow.com/questions/4750806/how-do-i-install-pip-on-windows, now marking StackOverflow Scraping Manager's Worker #25 for death. +INFO:root:StackOverflow Scraping Manager's Worker #25 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/6470428/catch-multiple-exceptions-in-one-line-except-block&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 186 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/6470428/catch-multiple-exceptions-in-one-line-except-block HTTP/1.1" 200 39933 +INFO:root:Finished with link https://stackoverflow.com/questions/6470428/catch-multiple-exceptions-in-one-line-except-block, now marking StackOverflow Scraping Manager's Worker #26 for death. +INFO:root:StackOverflow Scraping Manager's Worker #26 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/986006/how-do-i-pass-a-variable-by-reference&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 172 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/986006/how-do-i-pass-a-variable-by-reference HTTP/1.1" 200 94773 +INFO:root:Finished with link https://stackoverflow.com/questions/986006/how-do-i-pass-a-variable-by-reference, now marking StackOverflow Scraping Manager's Worker #27 for death. +INFO:root:StackOverflow Scraping Manager's Worker #27 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1132941/least-astonishment-and-the-mutable-default-argument&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 187 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1132941/least-astonishment-and-the-mutable-default-argument HTTP/1.1" 200 119590 +INFO:root:Finished with link https://stackoverflow.com/questions/1132941/least-astonishment-and-the-mutable-default-argument, now marking StackOverflow Scraping Manager's Worker #28 for death. +INFO:root:StackOverflow Scraping Manager's Worker #28 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1024847/add-new-keys-to-a-dictionary&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 164 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1024847/add-new-keys-to-a-dictionary HTTP/1.1" 200 57082 +INFO:root:Finished with link https://stackoverflow.com/questions/1024847/add-new-keys-to-a-dictionary, now marking StackOverflow Scraping Manager's Worker #29 for death. +INFO:root:StackOverflow Scraping Manager's Worker #29 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/576169/understanding-python-super-with-init-methods&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 179 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/576169/understanding-python-super-with-init-methods HTTP/1.1" 200 52942 +INFO:root:Finished with link https://stackoverflow.com/questions/576169/understanding-python-super-with-init-methods, now marking StackOverflow Scraping Manager's Worker #30 for death. +INFO:root:StackOverflow Scraping Manager's Worker #30 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2612802/how-to-clone-or-copy-a-list&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 163 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2612802/how-to-clone-or-copy-a-list HTTP/1.1" 200 63497 +INFO:root:Finished with link https://stackoverflow.com/questions/2612802/how-to-clone-or-copy-a-list, now marking StackOverflow Scraping Manager's Worker #31 for death. +INFO:root:StackOverflow Scraping Manager's Worker #31 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/101754/is-there-a-way-to-run-python-on-android&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 174 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/101754/is-there-a-way-to-run-python-on-android HTTP/1.1" 200 78141 +INFO:root:Finished with link https://stackoverflow.com/questions/101754/is-there-a-way-to-run-python-on-android, now marking StackOverflow Scraping Manager's Worker #32 for death. +INFO:root:StackOverflow Scraping Manager's Worker #32 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1720421/how-do-i-concatenate-two-lists-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 176 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1720421/how-do-i-concatenate-two-lists-in-python HTTP/1.1" 200 77549 +INFO:root:Finished with link https://stackoverflow.com/questions/1720421/how-do-i-concatenate-two-lists-in-python, now marking StackOverflow Scraping Manager's Worker #33 for death. +INFO:root:StackOverflow Scraping Manager's Worker #33 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/379906/how-do-i-parse-a-string-to-a-float-or-int&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 176 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/379906/how-do-i-parse-a-string-to-a-float-or-int HTTP/1.1" 200 72532 +INFO:root:Finished with link https://stackoverflow.com/questions/379906/how-do-i-parse-a-string-to-a-float-or-int, now marking StackOverflow Scraping Manager's Worker #34 for death. +INFO:root:StackOverflow Scraping Manager's Worker #34 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3277503/how-to-read-a-file-line-by-line-into-a-list&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 179 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3277503/how-to-read-a-file-line-by-line-into-a-list HTTP/1.1" 200 84753 +INFO:root:Finished with link https://stackoverflow.com/questions/3277503/how-to-read-a-file-line-by-line-into-a-list, now marking StackOverflow Scraping Manager's Worker #35 for death. +INFO:root:StackOverflow Scraping Manager's Worker #35 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/36901/what-does-double-star-asterisk-and-star-asterisk-do-for-parameters&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 200 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/36901/what-does-double-star-asterisk-and-star-asterisk-do-for-parameters HTTP/1.1" 200 65976 +INFO:root:Finished with link https://stackoverflow.com/questions/36901/what-does-double-star-asterisk-and-star-asterisk-do-for-parameters, now marking StackOverflow Scraping Manager's Worker #36 for death. +INFO:root:StackOverflow Scraping Manager's Worker #36 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/123198/how-do-i-copy-a-file-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 165 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/123198/how-do-i-copy-a-file-in-python HTTP/1.1" 200 74692 +INFO:root:Finished with link https://stackoverflow.com/questions/123198/how-do-i-copy-a-file-in-python, now marking StackOverflow Scraping Manager's Worker #37 for death. +INFO:root:StackOverflow Scraping Manager's Worker #37 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 183 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks HTTP/1.1" 200 95710 +INFO:root:Finished with link https://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks, now marking StackOverflow Scraping Manager's Worker #38 for death. +INFO:root:StackOverflow Scraping Manager's Worker #38 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2052390/manually-raising-throwing-an-exception-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 184 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2052390/manually-raising-throwing-an-exception-in-python HTTP/1.1" 200 49177 +INFO:root:Finished with link https://stackoverflow.com/questions/2052390/manually-raising-throwing-an-exception-in-python, now marking StackOverflow Scraping Manager's Worker #39 for death. +INFO:root:StackOverflow Scraping Manager's Worker #39 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/466345/converting-string-into-datetime&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 166 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/466345/converting-string-into-datetime HTTP/1.1" 200 66195 +INFO:root:Finished with link https://stackoverflow.com/questions/466345/converting-string-into-datetime, now marking StackOverflow Scraping Manager's Worker #40 for death. +INFO:root:StackOverflow Scraping Manager's Worker #40 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/663171/how-to-substring-a-string-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 170 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/663171/how-to-substring-a-string-in-python HTTP/1.1" 200 50539 +INFO:root:Finished with link https://stackoverflow.com/questions/663171/how-to-substring-a-string-in-python, now marking StackOverflow Scraping Manager's Worker #41 for death. +INFO:root:StackOverflow Scraping Manager's Worker #41 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/448271/what-is-init-py-for&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 154 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/448271/what-is-init-py-for HTTP/1.1" 200 53242 +INFO:root:Finished with link https://stackoverflow.com/questions/448271/what-is-init-py-for, now marking StackOverflow Scraping Manager's Worker #42 for death. +INFO:root:StackOverflow Scraping Manager's Worker #42 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/5137497/find-current-directory-and-files-directory&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 178 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/5137497/find-current-directory-and-files-directory HTTP/1.1" 200 55206 +INFO:root:Finished with link https://stackoverflow.com/questions/5137497/find-current-directory-and-files-directory, now marking StackOverflow Scraping Manager's Worker #43 for death. +INFO:root:StackOverflow Scraping Manager's Worker #43 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/287871/how-to-print-colored-text-in-terminal-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 182 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/287871/how-to-print-colored-text-in-terminal-in-python HTTP/1.1" 200 93312 +INFO:root:Finished with link https://stackoverflow.com/questions/287871/how-to-print-colored-text-in-terminal-in-python, now marking StackOverflow Scraping Manager's Worker #44 for death. +INFO:root:StackOverflow Scraping Manager's Worker #44 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/6797984/how-do-i-lowercase-a-string-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 173 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/6797984/how-do-i-lowercase-a-string-in-python HTTP/1.1" 200 39713 +INFO:root:Finished with link https://stackoverflow.com/questions/6797984/how-do-i-lowercase-a-string-in-python, now marking StackOverflow Scraping Manager's Worker #45 for death. +INFO:root:StackOverflow Scraping Manager's Worker #45 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1712227/how-do-i-get-the-number-of-elements-in-a-list&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 181 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1712227/how-do-i-get-the-number-of-elements-in-a-list HTTP/1.1" 200 45703 +INFO:root:Finished with link https://stackoverflow.com/questions/1712227/how-do-i-get-the-number-of-elements-in-a-list, now marking StackOverflow Scraping Manager's Worker #46 for death. +INFO:root:StackOverflow Scraping Manager's Worker #46 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/6996603/delete-a-file-or-folder&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 159 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/6996603/delete-a-file-or-folder HTTP/1.1" 200 50406 +INFO:root:Finished with link https://stackoverflow.com/questions/6996603/delete-a-file-or-folder, now marking StackOverflow Scraping Manager's Worker #47 for death. +INFO:root:StackOverflow Scraping Manager's Worker #47 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/606191/convert-bytes-to-a-string&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 160 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/606191/convert-bytes-to-a-string HTTP/1.1" 200 66265 +INFO:root:Finished with link https://stackoverflow.com/questions/606191/convert-bytes-to-a-string, now marking StackOverflow Scraping Manager's Worker #48 for death. +INFO:root:StackOverflow Scraping Manager's Worker #48 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/68645/are-static-class-variables-possible-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 179 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/68645/are-static-class-variables-possible-in-python HTTP/1.1" 200 70585 +INFO:root:Finished with link https://stackoverflow.com/questions/68645/are-static-class-variables-possible-in-python, now marking StackOverflow Scraping Manager's Worker #49 for death. +INFO:root:StackOverflow Scraping Manager's Worker #49 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/930397/getting-the-last-element-of-a-list&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 169 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/930397/getting-the-last-element-of-a-list HTTP/1.1" 200 50071 +INFO:root:Finished with link https://stackoverflow.com/questions/930397/getting-the-last-element-of-a-list, now marking StackOverflow Scraping Manager's Worker #50 for death. +INFO:root:StackOverflow Scraping Manager's Worker #50 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2720014/how-to-upgrade-all-python-packages-with-pip&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 179 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2720014/how-to-upgrade-all-python-packages-with-pip HTTP/1.1" 200 97267 +INFO:root:Finished with link https://stackoverflow.com/questions/2720014/how-to-upgrade-all-python-packages-with-pip, now marking StackOverflow Scraping Manager's Worker #51 for death. +INFO:root:StackOverflow Scraping Manager's Worker #51 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/30081275/why-is-1000000000000000-in-range1000000000000001-so-fast-in-python-3&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 205 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/30081275/why-is-1000000000000000-in-range1000000000000001-so-fast-in-python-3 HTTP/1.1" 200 61366 +INFO:root:Finished with link https://stackoverflow.com/questions/30081275/why-is-1000000000000000-in-range1000000000000001-so-fast-in-python-3, now marking StackOverflow Scraping Manager's Worker #52 for death. +INFO:root:StackOverflow Scraping Manager's Worker #52 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/60208/replacements-for-switch-statement-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 177 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/60208/replacements-for-switch-statement-in-python HTTP/1.1" 200 103492 +INFO:root:Finished with link https://stackoverflow.com/questions/60208/replacements-for-switch-statement-in-python, now marking StackOverflow Scraping Manager's Worker #53 for death. +INFO:root:StackOverflow Scraping Manager's Worker #53 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/4906977/how-to-access-environment-variable-values&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 177 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/4906977/how-to-access-environment-variable-values HTTP/1.1" 200 44970 +INFO:root:Finished with link https://stackoverflow.com/questions/4906977/how-to-access-environment-variable-values, now marking StackOverflow Scraping Manager's Worker #54 for death. +INFO:root:StackOverflow Scraping Manager's Worker #54 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/9371238/why-is-reading-lines-from-stdin-much-slower-in-c-than-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 196 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/9371238/why-is-reading-lines-from-stdin-much-slower-in-c-than-python HTTP/1.1" 200 60825 +INFO:root:Finished with link https://stackoverflow.com/questions/9371238/why-is-reading-lines-from-stdin-much-slower-in-c-than-python, now marking StackOverflow Scraping Manager's Worker #55 for death. +INFO:root:StackOverflow Scraping Manager's Worker #55 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/17271319/how-do-i-install-pip-on-macos-or-os-x&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 174 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/17271319/how-do-i-install-pip-on-macos-or-os-x HTTP/1.1" 200 78444 +INFO:root:Finished with link https://stackoverflow.com/questions/17271319/how-do-i-install-pip-on-macos-or-os-x, now marking StackOverflow Scraping Manager's Worker #56 for death. +INFO:root:StackOverflow Scraping Manager's Worker #56 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/493386/how-to-print-without-newline-or-space&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 172 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/493386/how-to-print-without-newline-or-space HTTP/1.1" 200 68118 +INFO:root:Finished with link https://stackoverflow.com/questions/493386/how-to-print-without-newline-or-space, now marking StackOverflow Scraping Manager's Worker #57 for death. +INFO:root:StackOverflow Scraping Manager's Worker #57 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/72899/how-do-i-sort-a-list-of-dictionaries-by-a-value-of-the-dictionary&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 199 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/72899/how-do-i-sort-a-list-of-dictionaries-by-a-value-of-the-dictionary HTTP/1.1" 200 51698 +INFO:root:Finished with link https://stackoverflow.com/questions/72899/how-do-i-sort-a-list-of-dictionaries-by-a-value-of-the-dictionary, now marking StackOverflow Scraping Manager's Worker #58 for death. +INFO:root:StackOverflow Scraping Manager's Worker #58 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2225038/determine-the-type-of-an-object&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 167 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2225038/determine-the-type-of-an-object HTTP/1.1" 200 54915 +INFO:root:Finished with link https://stackoverflow.com/questions/2225038/determine-the-type-of-an-object, now marking StackOverflow Scraping Manager's Worker #59 for death. +INFO:root:StackOverflow Scraping Manager's Worker #59 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/493819/python-join-why-is-it-string-joinlist-instead-of-list-joinstring&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 199 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/493819/python-join-why-is-it-string-joinlist-instead-of-list-joinstring HTTP/1.1" 200 46293 +INFO:root:Finished with link https://stackoverflow.com/questions/493819/python-join-why-is-it-string-joinlist-instead-of-list-joinstring, now marking StackOverflow Scraping Manager's Worker #60 for death. +INFO:root:StackOverflow Scraping Manager's Worker #60 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/735975/static-methods-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 159 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/735975/static-methods-in-python HTTP/1.1" 200 51636 +INFO:root:Finished with link https://stackoverflow.com/questions/735975/static-methods-in-python, now marking StackOverflow Scraping Manager's Worker #61 for death. +INFO:root:StackOverflow Scraping Manager's Worker #61 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/306400/how-to-randomly-select-an-item-from-a-list&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 177 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/306400/how-to-randomly-select-an-item-from-a-list HTTP/1.1" 200 52106 +INFO:root:Finished with link https://stackoverflow.com/questions/306400/how-to-randomly-select-an-item-from-a-list, now marking StackOverflow Scraping Manager's Worker #62 for death. +INFO:root:StackOverflow Scraping Manager's Worker #62 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/332289/how-do-you-change-the-size-of-figures-drawn-with-matplotlib&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 194 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/332289/how-do-you-change-the-size-of-figures-drawn-with-matplotlib HTTP/1.1" 200 57796 +INFO:root:Finished with link https://stackoverflow.com/questions/332289/how-do-you-change-the-size-of-figures-drawn-with-matplotlib, now marking StackOverflow Scraping Manager's Worker #63 for death. +INFO:root:StackOverflow Scraping Manager's Worker #63 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/275018/how-can-i-remove-a-trailing-newline&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 170 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/275018/how-can-i-remove-a-trailing-newline HTTP/1.1" 200 77197 +INFO:root:Finished with link https://stackoverflow.com/questions/275018/how-can-i-remove-a-trailing-newline, now marking StackOverflow Scraping Manager's Worker #64 for death. +INFO:root:StackOverflow Scraping Manager's Worker #64 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/12179271/meaning-of-classmethod-and-staticmethod-for-beginner&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 189 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/12179271/meaning-of-classmethod-and-staticmethod-for-beginner HTTP/1.1" 200 53802 +INFO:root:Finished with link https://stackoverflow.com/questions/12179271/meaning-of-classmethod-and-staticmethod-for-beginner, now marking StackOverflow Scraping Manager's Worker #65 for death. +INFO:root:StackOverflow Scraping Manager's Worker #65 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3061/calling-a-function-of-a-module-by-using-its-name-a-string&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 190 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3061/calling-a-function-of-a-module-by-using-its-name-a-string HTTP/1.1" 200 52145 +INFO:root:Finished with link https://stackoverflow.com/questions/3061/calling-a-function-of-a-module-by-using-its-name-a-string, now marking StackOverflow Scraping Manager's Worker #66 for death. +INFO:root:StackOverflow Scraping Manager's Worker #66 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/11346283/renaming-columns-in-pandas&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 163 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/11346283/renaming-columns-in-pandas HTTP/1.1" 200 75721 +INFO:root:Finished with link https://stackoverflow.com/questions/11346283/renaming-columns-in-pandas, now marking StackOverflow Scraping Manager's Worker #67 for death. +INFO:root:StackOverflow Scraping Manager's Worker #67 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/354038/how-do-i-check-if-a-string-is-a-number-float&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 179 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/354038/how-do-i-check-if-a-string-is-a-number-float HTTP/1.1" 200 99196 +INFO:root:Finished with link https://stackoverflow.com/questions/354038/how-do-i-check-if-a-string-is-a-number-float, now marking StackOverflow Scraping Manager's Worker #68 for death. +INFO:root:StackOverflow Scraping Manager's Worker #68 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/17071871/select-rows-from-a-dataframe-based-on-values-in-a-column-in-pandas&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 203 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/17071871/select-rows-from-a-dataframe-based-on-values-in-a-column-in-pandas HTTP/1.1" 200 54939 +INFO:root:Finished with link https://stackoverflow.com/questions/17071871/select-rows-from-a-dataframe-based-on-values-in-a-column-in-pandas, now marking StackOverflow Scraping Manager's Worker #69 for death. +INFO:root:StackOverflow Scraping Manager's Worker #69 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/101268/hidden-features-of-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 160 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/101268/hidden-features-of-python HTTP/1.1" 200 115752 +INFO:root:Finished with link https://stackoverflow.com/questions/101268/hidden-features-of-python, now marking StackOverflow Scraping Manager's Worker #70 for death. +INFO:root:StackOverflow Scraping Manager's Worker #70 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/455612/limiting-floats-to-two-decimal-points&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 172 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/455612/limiting-floats-to-two-decimal-points HTTP/1.1" 200 81758 +INFO:root:Finished with link https://stackoverflow.com/questions/455612/limiting-floats-to-two-decimal-points, now marking StackOverflow Scraping Manager's Worker #71 for death. +INFO:root:StackOverflow Scraping Manager's Worker #71 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/11277432/how-to-remove-a-key-from-a-python-dictionary&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 181 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/11277432/how-to-remove-a-key-from-a-python-dictionary HTTP/1.1" 200 54355 +INFO:root:Finished with link https://stackoverflow.com/questions/11277432/how-to-remove-a-key-from-a-python-dictionary, now marking StackOverflow Scraping Manager's Worker #72 for death. +INFO:root:StackOverflow Scraping Manager's Worker #72 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/610883/how-to-know-if-an-object-has-an-attribute-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 186 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/610883/how-to-know-if-an-object-has-an-attribute-in-python HTTP/1.1" 200 55721 +INFO:root:Finished with link https://stackoverflow.com/questions/610883/how-to-know-if-an-object-has-an-attribute-in-python, now marking StackOverflow Scraping Manager's Worker #73 for death. +INFO:root:StackOverflow Scraping Manager's Worker #73 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/4706499/how-do-you-append-to-a-file-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 173 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/4706499/how-do-you-append-to-a-file-in-python HTTP/1.1" 200 46336 +INFO:root:Finished with link https://stackoverflow.com/questions/4706499/how-do-you-append-to-a-file-in-python, now marking StackOverflow Scraping Manager's Worker #74 for death. +INFO:root:StackOverflow Scraping Manager's Worker #74 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2835559/why-cant-python-parse-this-json-data&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 172 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2835559/why-cant-python-parse-this-json-data HTTP/1.1" 200 51758 +INFO:root:Finished with link https://stackoverflow.com/questions/2835559/why-cant-python-parse-this-json-data, now marking StackOverflow Scraping Manager's Worker #75 for death. +INFO:root:StackOverflow Scraping Manager's Worker #75 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2600191/how-can-i-count-the-occurrences-of-a-list-item&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 182 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2600191/how-can-i-count-the-occurrences-of-a-list-item HTTP/1.1" 200 65673 +INFO:root:Finished with link https://stackoverflow.com/questions/2600191/how-can-i-count-the-occurrences-of-a-list-item, now marking StackOverflow Scraping Manager's Worker #76 for death. +INFO:root:StackOverflow Scraping Manager's Worker #76 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/990754/how-to-leave-exit-deactivate-a-python-virtualenv&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 183 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/990754/how-to-leave-exit-deactivate-a-python-virtualenv HTTP/1.1" 200 50471 +INFO:root:Finished with link https://stackoverflow.com/questions/990754/how-to-leave-exit-deactivate-a-python-virtualenv, now marking StackOverflow Scraping Manager's Worker #77 for death. +INFO:root:StackOverflow Scraping Manager's Worker #77 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1450393/how-do-you-read-from-stdin&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 162 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1450393/how-do-you-read-from-stdin HTTP/1.1" 200 68543 +INFO:root:Finished with link https://stackoverflow.com/questions/1450393/how-do-you-read-from-stdin, now marking StackOverflow Scraping Manager's Worker #78 for death. +INFO:root:StackOverflow Scraping Manager's Worker #78 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3394835/use-of-args-and-kwargs&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 158 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3394835/use-of-args-and-kwargs HTTP/1.1" 200 52880 +INFO:root:Finished with link https://stackoverflow.com/questions/3394835/use-of-args-and-kwargs, now marking StackOverflow Scraping Manager's Worker #79 for death. +INFO:root:StackOverflow Scraping Manager's Worker #79 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/402504/how-to-determine-a-python-variables-type&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 175 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/402504/how-to-determine-a-python-variables-type HTTP/1.1" 200 56026 +INFO:root:Finished with link https://stackoverflow.com/questions/402504/how-to-determine-a-python-variables-type, now marking StackOverflow Scraping Manager's Worker #80 for death. +INFO:root:StackOverflow Scraping Manager's Worker #80 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/16476924/how-to-iterate-over-rows-in-a-dataframe-in-pandas&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 186 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/16476924/how-to-iterate-over-rows-in-a-dataframe-in-pandas HTTP/1.1" 200 72560 +INFO:root:Finished with link https://stackoverflow.com/questions/16476924/how-to-iterate-over-rows-in-a-dataframe-in-pandas, now marking StackOverflow Scraping Manager's Worker #81 for death. +INFO:root:StackOverflow Scraping Manager's Worker #81 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/5082452/string-formatting-vs-format&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 163 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/5082452/string-formatting-vs-format HTTP/1.1" 200 75728 +INFO:root:Finished with link https://stackoverflow.com/questions/5082452/string-formatting-vs-format, now marking StackOverflow Scraping Manager's Worker #82 for death. +INFO:root:StackOverflow Scraping Manager's Worker #82 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/627435/how-to-remove-an-element-from-a-list-by-index&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 180 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/627435/how-to-remove-an-element-from-a-list-by-index HTTP/1.1" 200 60795 +INFO:root:Finished with link https://stackoverflow.com/questions/627435/how-to-remove-an-element-from-a-list-by-index, now marking StackOverflow Scraping Manager's Worker #83 for death. +INFO:root:StackOverflow Scraping Manager's Worker #83 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/931092/reverse-a-string-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 161 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/931092/reverse-a-string-in-python HTTP/1.1" 200 65481 +INFO:root:Finished with link https://stackoverflow.com/questions/931092/reverse-a-string-in-python, now marking StackOverflow Scraping Manager's Worker #84 for death. +INFO:root:StackOverflow Scraping Manager's Worker #84 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/961632/converting-integer-to-string&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 163 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/961632/converting-integer-to-string HTTP/1.1" 200 40566 +INFO:root:Finished with link https://stackoverflow.com/questions/961632/converting-integer-to-string, now marking StackOverflow Scraping Manager's Worker #85 for death. +INFO:root:StackOverflow Scraping Manager's Worker #85 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/510972/getting-the-class-name-of-an-instance&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 172 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/510972/getting-the-class-name-of-an-instance HTTP/1.1" 200 47296 +INFO:root:Finished with link https://stackoverflow.com/questions/510972/getting-the-class-name-of-an-instance, now marking StackOverflow Scraping Manager's Worker #86 for death. +INFO:root:StackOverflow Scraping Manager's Worker #86 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/5466451/how-can-i-print-literal-curly-brace-characters-in-python-string-and-also-use-fo&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 200 50770 +INFO:root:Finished with link https://stackoverflow.com/questions/5466451/how-can-i-print-literal-curly-brace-characters-in-python-string-and-also-use-fo, now marking StackOverflow Scraping Manager's Worker #87 for death. +INFO:root:StackOverflow Scraping Manager's Worker #87 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/339007/nicest-way-to-pad-zeroes-to-a-string&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 171 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/339007/nicest-way-to-pad-zeroes-to-a-string HTTP/1.1" 200 51415 +INFO:root:Finished with link https://stackoverflow.com/questions/339007/nicest-way-to-pad-zeroes-to-a-string, now marking StackOverflow Scraping Manager's Worker #88 for death. +INFO:root:StackOverflow Scraping Manager's Worker #88 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2257441/random-string-generation-with-upper-case-letters-and-digits&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 195 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2257441/random-string-generation-with-upper-case-letters-and-digits HTTP/1.1" 200 84574 +INFO:root:Finished with link https://stackoverflow.com/questions/2257441/random-string-generation-with-upper-case-letters-and-digits, now marking StackOverflow Scraping Manager's Worker #89 for death. +INFO:root:StackOverflow Scraping Manager's Worker #89 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/9573244/how-to-check-if-the-string-is-empty&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 171 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/9573244/how-to-check-if-the-string-is-empty HTTP/1.1" 200 64190 +INFO:root:Finished with link https://stackoverflow.com/questions/9573244/how-to-check-if-the-string-is-empty, now marking StackOverflow Scraping Manager's Worker #90 for death. +INFO:root:StackOverflow Scraping Manager's Worker #90 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1747817/create-a-dictionary-with-list-comprehension&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 179 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1747817/create-a-dictionary-with-list-comprehension HTTP/1.1" 200 49921 +INFO:root:Finished with link https://stackoverflow.com/questions/1747817/create-a-dictionary-with-list-comprehension, now marking StackOverflow Scraping Manager's Worker #91 for death. +INFO:root:StackOverflow Scraping Manager's Worker #91 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/9942594/unicodeencodeerror-ascii-codec-cant-encode-character-u-xa0-in-position-20&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 209 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/9942594/unicodeencodeerror-ascii-codec-cant-encode-character-u-xa0-in-position-20 HTTP/1.1" 200 79027 +INFO:root:Finished with link https://stackoverflow.com/questions/9942594/unicodeencodeerror-ascii-codec-cant-encode-character-u-xa0-in-position-20, now marking StackOverflow Scraping Manager's Worker #92 for death. +INFO:root:StackOverflow Scraping Manager's Worker #92 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/5574702/how-to-print-to-stderr-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 168 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/5574702/how-to-print-to-stderr-in-python HTTP/1.1" 200 65211 +INFO:root:Finished with link https://stackoverflow.com/questions/5574702/how-to-print-to-stderr-in-python, now marking StackOverflow Scraping Manager's Worker #93 for death. +INFO:root:StackOverflow Scraping Manager's Worker #93 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2846653/how-to-use-threading-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 166 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2846653/how-to-use-threading-in-python HTTP/1.1" 200 83922 +INFO:root:Finished with link https://stackoverflow.com/questions/2846653/how-to-use-threading-in-python, now marking StackOverflow Scraping Manager's Worker #94 for death. +INFO:root:StackOverflow Scraping Manager's Worker #94 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3996904/generate-random-integers-between-0-and-9&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 176 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3996904/generate-random-integers-between-0-and-9 HTTP/1.1" 200 52390 +INFO:root:Finished with link https://stackoverflow.com/questions/3996904/generate-random-integers-between-0-and-9, now marking StackOverflow Scraping Manager's Worker #95 for death. +INFO:root:StackOverflow Scraping Manager's Worker #95 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/5844672/delete-an-element-from-a-dictionary&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 171 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/5844672/delete-an-element-from-a-dictionary HTTP/1.1" 200 62162 +INFO:root:Finished with link https://stackoverflow.com/questions/5844672/delete-an-element-from-a-dictionary, now marking StackOverflow Scraping Manager's Worker #96 for death. +INFO:root:StackOverflow Scraping Manager's Worker #96 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1301346/what-is-the-meaning-of-a-single-and-a-double-underscore-before-an-object-name&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 213 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1301346/what-is-the-meaning-of-a-single-and-a-double-underscore-before-an-object-name HTTP/1.1" 200 56691 +INFO:root:Finished with link https://stackoverflow.com/questions/1301346/what-is-the-meaning-of-a-single-and-a-double-underscore-before-an-object-name, now marking StackOverflow Scraping Manager's Worker #97 for death. +INFO:root:StackOverflow Scraping Manager's Worker #97 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/36932/how-can-i-represent-an-enum-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 171 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/36932/how-can-i-represent-an-enum-in-python HTTP/1.1" 200 83983 +INFO:root:Finished with link https://stackoverflow.com/questions/36932/how-can-i-represent-an-enum-in-python, now marking StackOverflow Scraping Manager's Worker #98 for death. +INFO:root:StackOverflow Scraping Manager's Worker #98 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/582336/how-can-you-profile-a-python-script&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 170 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/582336/how-can-you-profile-a-python-script HTTP/1.1" 200 77450 +INFO:root:Finished with link https://stackoverflow.com/questions/582336/how-can-you-profile-a-python-script, now marking StackOverflow Scraping Manager's Worker #99 for death. +INFO:root:StackOverflow Scraping Manager's Worker #99 is dead, no need to kill prematurely. +WARNING:root:StackExchange API Manager's Worker #0 received a link, https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 +DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 200 15745 +WARNING:root:Request count for key RGaU7lYPN8L5KbnIfkxmGQ(( is off by 49 +INFO:root:New worker, StackOverflow Scraping Manager's Worker #200, spawned for task https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #201, spawned for task https://stackoverflow.com/questions/394809/does-python-have-a-ternary-conditional-operator. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #202, spawned for task https://stackoverflow.com/questions/100003/what-are-metaclasses-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #203, spawned for task https://stackoverflow.com/questions/419163/what-does-if-name-main-do. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #204, spawned for task https://stackoverflow.com/questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #205, spawned for task https://stackoverflow.com/questions/89228/calling-an-external-command-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #206, spawned for task https://stackoverflow.com/questions/38987/how-to-merge-two-dictionaries-in-a-single-expression. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #207, spawned for task https://stackoverflow.com/questions/273192/how-can-i-safely-create-a-nested-directory. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #208, spawned for task https://stackoverflow.com/questions/3437059/does-python-have-a-string-contains-substring-method. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #209, spawned for task https://stackoverflow.com/questions/3207219/how-do-i-list-all-files-of-a-directory. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #210, spawned for task https://stackoverflow.com/questions/613183/how-do-i-sort-a-dictionary-by-value. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #211, spawned for task https://stackoverflow.com/questions/53513/how-do-i-check-if-a-list-is-empty. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #212, spawned for task https://stackoverflow.com/questions/136097/what-is-the-difference-between-staticmethod-and-classmethod. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #213, spawned for task https://stackoverflow.com/questions/522563/accessing-the-index-in-for-loops. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #214, spawned for task https://stackoverflow.com/questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #215, spawned for task https://stackoverflow.com/questions/509211/understanding-slice-notation. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #216, spawned for task https://stackoverflow.com/questions/423379/using-global-variables-in-a-function. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #217, spawned for task https://stackoverflow.com/questions/3294889/iterating-over-dictionaries-using-for-loops. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #218, spawned for task https://stackoverflow.com/questions/176918/finding-the-index-of-an-item-given-a-list-containing-it-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #219, spawned for task https://stackoverflow.com/questions/952914/how-to-make-a-flat-list-out-of-list-of-lists. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #220, spawned for task https://stackoverflow.com/questions/1602934/check-if-a-given-key-already-exists-in-a-dictionary. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #221, spawned for task https://stackoverflow.com/questions/739654/how-to-make-a-chain-of-function-decorators. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #222, spawned for task https://stackoverflow.com/questions/510348/how-can-i-make-a-time-delay-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #223, spawned for task https://stackoverflow.com/questions/415511/how-to-get-the-current-time-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #224, spawned for task https://stackoverflow.com/questions/1436703/difference-between-str-and-repr. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #225, spawned for task https://stackoverflow.com/questions/4750806/how-do-i-install-pip-on-windows. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #226, spawned for task https://stackoverflow.com/questions/6470428/catch-multiple-exceptions-in-one-line-except-block. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #227, spawned for task https://stackoverflow.com/questions/986006/how-do-i-pass-a-variable-by-reference. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #228, spawned for task https://stackoverflow.com/questions/1132941/least-astonishment-and-the-mutable-default-argument. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #229, spawned for task https://stackoverflow.com/questions/1024847/add-new-keys-to-a-dictionary. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #230, spawned for task https://stackoverflow.com/questions/576169/understanding-python-super-with-init-methods. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #231, spawned for task https://stackoverflow.com/questions/2612802/how-to-clone-or-copy-a-list. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #232, spawned for task https://stackoverflow.com/questions/101754/is-there-a-way-to-run-python-on-android. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #233, spawned for task https://stackoverflow.com/questions/1720421/how-do-i-concatenate-two-lists-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #234, spawned for task https://stackoverflow.com/questions/379906/how-do-i-parse-a-string-to-a-float-or-int. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #235, spawned for task https://stackoverflow.com/questions/3277503/how-to-read-a-file-line-by-line-into-a-list. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #236, spawned for task https://stackoverflow.com/questions/36901/what-does-double-star-asterisk-and-star-asterisk-do-for-parameters. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #237, spawned for task https://stackoverflow.com/questions/123198/how-do-i-copy-a-file-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #238, spawned for task https://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #239, spawned for task https://stackoverflow.com/questions/2052390/manually-raising-throwing-an-exception-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #240, spawned for task https://stackoverflow.com/questions/466345/converting-string-into-datetime. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #241, spawned for task https://stackoverflow.com/questions/663171/how-to-substring-a-string-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #242, spawned for task https://stackoverflow.com/questions/448271/what-is-init-py-for. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #243, spawned for task https://stackoverflow.com/questions/5137497/find-current-directory-and-files-directory. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #244, spawned for task https://stackoverflow.com/questions/287871/how-to-print-colored-text-in-terminal-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #245, spawned for task https://stackoverflow.com/questions/6797984/how-do-i-lowercase-a-string-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #246, spawned for task https://stackoverflow.com/questions/1712227/how-do-i-get-the-number-of-elements-in-a-list. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #247, spawned for task https://stackoverflow.com/questions/6996603/delete-a-file-or-folder. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #248, spawned for task https://stackoverflow.com/questions/606191/convert-bytes-to-a-string. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #249, spawned for task https://stackoverflow.com/questions/68645/are-static-class-variables-possible-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #250, spawned for task https://stackoverflow.com/questions/930397/getting-the-last-element-of-a-list. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #251, spawned for task https://stackoverflow.com/questions/2720014/how-to-upgrade-all-python-packages-with-pip. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #252, spawned for task https://stackoverflow.com/questions/30081275/why-is-1000000000000000-in-range1000000000000001-so-fast-in-python-3. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #253, spawned for task https://stackoverflow.com/questions/60208/replacements-for-switch-statement-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #254, spawned for task https://stackoverflow.com/questions/4906977/how-to-access-environment-variable-values. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #255, spawned for task https://stackoverflow.com/questions/9371238/why-is-reading-lines-from-stdin-much-slower-in-c-than-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #256, spawned for task https://stackoverflow.com/questions/17271319/how-do-i-install-pip-on-macos-or-os-x. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #257, spawned for task https://stackoverflow.com/questions/493386/how-to-print-without-newline-or-space. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #258, spawned for task https://stackoverflow.com/questions/72899/how-do-i-sort-a-list-of-dictionaries-by-a-value-of-the-dictionary. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #259, spawned for task https://stackoverflow.com/questions/2225038/determine-the-type-of-an-object. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #260, spawned for task https://stackoverflow.com/questions/493819/python-join-why-is-it-string-joinlist-instead-of-list-joinstring. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #261, spawned for task https://stackoverflow.com/questions/735975/static-methods-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #262, spawned for task https://stackoverflow.com/questions/306400/how-to-randomly-select-an-item-from-a-list. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #263, spawned for task https://stackoverflow.com/questions/332289/how-do-you-change-the-size-of-figures-drawn-with-matplotlib. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #264, spawned for task https://stackoverflow.com/questions/275018/how-can-i-remove-a-trailing-newline. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #265, spawned for task https://stackoverflow.com/questions/12179271/meaning-of-classmethod-and-staticmethod-for-beginner. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #266, spawned for task https://stackoverflow.com/questions/3061/calling-a-function-of-a-module-by-using-its-name-a-string. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #267, spawned for task https://stackoverflow.com/questions/11346283/renaming-columns-in-pandas. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #268, spawned for task https://stackoverflow.com/questions/354038/how-do-i-check-if-a-string-is-a-number-float. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #269, spawned for task https://stackoverflow.com/questions/17071871/select-rows-from-a-dataframe-based-on-values-in-a-column-in-pandas. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #270, spawned for task https://stackoverflow.com/questions/101268/hidden-features-of-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #271, spawned for task https://stackoverflow.com/questions/455612/limiting-floats-to-two-decimal-points. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #272, spawned for task https://stackoverflow.com/questions/11277432/how-to-remove-a-key-from-a-python-dictionary. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #273, spawned for task https://stackoverflow.com/questions/610883/how-to-know-if-an-object-has-an-attribute-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #274, spawned for task https://stackoverflow.com/questions/4706499/how-do-you-append-to-a-file-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #275, spawned for task https://stackoverflow.com/questions/2835559/why-cant-python-parse-this-json-data. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #276, spawned for task https://stackoverflow.com/questions/2600191/how-can-i-count-the-occurrences-of-a-list-item. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #277, spawned for task https://stackoverflow.com/questions/990754/how-to-leave-exit-deactivate-a-python-virtualenv. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #278, spawned for task https://stackoverflow.com/questions/1450393/how-do-you-read-from-stdin. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #279, spawned for task https://stackoverflow.com/questions/3394835/use-of-args-and-kwargs. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #280, spawned for task https://stackoverflow.com/questions/402504/how-to-determine-a-python-variables-type. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #281, spawned for task https://stackoverflow.com/questions/16476924/how-to-iterate-over-rows-in-a-dataframe-in-pandas. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #282, spawned for task https://stackoverflow.com/questions/5082452/string-formatting-vs-format. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #283, spawned for task https://stackoverflow.com/questions/627435/how-to-remove-an-element-from-a-list-by-index. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #284, spawned for task https://stackoverflow.com/questions/931092/reverse-a-string-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #285, spawned for task https://stackoverflow.com/questions/961632/converting-integer-to-string. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #286, spawned for task https://stackoverflow.com/questions/510972/getting-the-class-name-of-an-instance. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #287, spawned for task https://stackoverflow.com/questions/5466451/how-can-i-print-literal-curly-brace-characters-in-python-string-and-also-use-fo. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #288, spawned for task https://stackoverflow.com/questions/339007/nicest-way-to-pad-zeroes-to-a-string. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #289, spawned for task https://stackoverflow.com/questions/2257441/random-string-generation-with-upper-case-letters-and-digits. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #290, spawned for task https://stackoverflow.com/questions/9573244/how-to-check-if-the-string-is-empty. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #291, spawned for task https://stackoverflow.com/questions/1747817/create-a-dictionary-with-list-comprehension. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #292, spawned for task https://stackoverflow.com/questions/9942594/unicodeencodeerror-ascii-codec-cant-encode-character-u-xa0-in-position-20. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #293, spawned for task https://stackoverflow.com/questions/5574702/how-to-print-to-stderr-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #294, spawned for task https://stackoverflow.com/questions/2846653/how-to-use-threading-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #295, spawned for task https://stackoverflow.com/questions/3996904/generate-random-integers-between-0-and-9. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #296, spawned for task https://stackoverflow.com/questions/5844672/delete-an-element-from-a-dictionary. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #297, spawned for task https://stackoverflow.com/questions/1301346/what-is-the-meaning-of-a-single-and-a-double-underscore-before-an-object-name. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #298, spawned for task https://stackoverflow.com/questions/36932/how-can-i-represent-an-enum-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #299, spawned for task https://stackoverflow.com/questions/582336/how-can-you-profile-a-python-script. +WARNING:root:StackOverflow Scraping Manager's Worker #100 received a link, https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/231767/what-does-the-yield-keyword-do&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 165 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/231767/what-does-the-yield-keyword-do HTTP/1.1" 200 107088 +INFO:root:Finished with link https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do, now marking StackOverflow Scraping Manager's Worker #100 for death. +INFO:root:StackOverflow Scraping Manager's Worker #100 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #101 received a link, https://stackoverflow.com/questions/394809/does-python-have-a-ternary-conditional-operator&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/394809/does-python-have-a-ternary-conditional-operator&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 182 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/394809/does-python-have-a-ternary-conditional-operator HTTP/1.1" 200 74904 +INFO:root:Finished with link https://stackoverflow.com/questions/394809/does-python-have-a-ternary-conditional-operator, now marking StackOverflow Scraping Manager's Worker #101 for death. +INFO:root:StackOverflow Scraping Manager's Worker #101 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #102 received a link, https://stackoverflow.com/questions/100003/what-are-metaclasses-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/100003/what-are-metaclasses-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 165 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/100003/what-are-metaclasses-in-python HTTP/1.1" 200 78714 +INFO:root:Finished with link https://stackoverflow.com/questions/100003/what-are-metaclasses-in-python, now marking StackOverflow Scraping Manager's Worker #102 for death. +INFO:root:StackOverflow Scraping Manager's Worker #102 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #103 received a link, https://stackoverflow.com/questions/419163/what-does-if-name-main-do&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/419163/what-does-if-name-main-do&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 160 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/419163/what-does-if-name-main-do HTTP/1.1" 200 81773 +INFO:root:Finished with link https://stackoverflow.com/questions/419163/what-does-if-name-main-do, now marking StackOverflow Scraping Manager's Worker #103 for death. +INFO:root:StackOverflow Scraping Manager's Worker #103 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #104 received a link, https://stackoverflow.com/questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 189 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions HTTP/1.1" 200 101490 +INFO:root:Finished with link https://stackoverflow.com/questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions, now marking StackOverflow Scraping Manager's Worker #104 for death. +INFO:root:StackOverflow Scraping Manager's Worker #104 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #105 received a link, https://stackoverflow.com/questions/89228/calling-an-external-command-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/89228/calling-an-external-command-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 171 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/89228/calling-an-external-command-in-python HTTP/1.1" 200 90371 +INFO:root:Finished with link https://stackoverflow.com/questions/89228/calling-an-external-command-in-python, now marking StackOverflow Scraping Manager's Worker #105 for death. +INFO:root:StackOverflow Scraping Manager's Worker #105 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #106 received a link, https://stackoverflow.com/questions/38987/how-to-merge-two-dictionaries-in-a-single-expression&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/38987/how-to-merge-two-dictionaries-in-a-single-expression&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 186 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/38987/how-to-merge-two-dictionaries-in-a-single-expression HTTP/1.1" 200 85359 +INFO:root:Finished with link https://stackoverflow.com/questions/38987/how-to-merge-two-dictionaries-in-a-single-expression, now marking StackOverflow Scraping Manager's Worker #106 for death. +INFO:root:StackOverflow Scraping Manager's Worker #106 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #107 received a link, https://stackoverflow.com/questions/273192/how-can-i-safely-create-a-nested-directory&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/273192/how-can-i-safely-create-a-nested-directory&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 177 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/273192/how-can-i-safely-create-a-nested-directory HTTP/1.1" 200 85445 +INFO:root:Finished with link https://stackoverflow.com/questions/273192/how-can-i-safely-create-a-nested-directory, now marking StackOverflow Scraping Manager's Worker #107 for death. +INFO:root:StackOverflow Scraping Manager's Worker #107 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #108 received a link, https://stackoverflow.com/questions/3437059/does-python-have-a-string-contains-substring-method&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3437059/does-python-have-a-string-contains-substring-method&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 187 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3437059/does-python-have-a-string-contains-substring-method HTTP/1.1" 200 54322 +INFO:root:Finished with link https://stackoverflow.com/questions/3437059/does-python-have-a-string-contains-substring-method, now marking StackOverflow Scraping Manager's Worker #108 for death. +INFO:root:StackOverflow Scraping Manager's Worker #108 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #109 received a link, https://stackoverflow.com/questions/3207219/how-do-i-list-all-files-of-a-directory&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3207219/how-do-i-list-all-files-of-a-directory&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 174 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3207219/how-do-i-list-all-files-of-a-directory HTTP/1.1" 200 86334 +INFO:root:Finished with link https://stackoverflow.com/questions/3207219/how-do-i-list-all-files-of-a-directory, now marking StackOverflow Scraping Manager's Worker #109 for death. +INFO:root:StackOverflow Scraping Manager's Worker #109 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #110 received a link, https://stackoverflow.com/questions/613183/how-do-i-sort-a-dictionary-by-value&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/613183/how-do-i-sort-a-dictionary-by-value&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 170 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/613183/how-do-i-sort-a-dictionary-by-value HTTP/1.1" 200 89382 +INFO:root:Finished with link https://stackoverflow.com/questions/613183/how-do-i-sort-a-dictionary-by-value, now marking StackOverflow Scraping Manager's Worker #110 for death. +INFO:root:StackOverflow Scraping Manager's Worker #110 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #111 received a link, https://stackoverflow.com/questions/53513/how-do-i-check-if-a-list-is-empty&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/53513/how-do-i-check-if-a-list-is-empty&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 167 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/53513/how-do-i-check-if-a-list-is-empty HTTP/1.1" 200 90200 +INFO:root:Finished with link https://stackoverflow.com/questions/53513/how-do-i-check-if-a-list-is-empty, now marking StackOverflow Scraping Manager's Worker #111 for death. +INFO:root:StackOverflow Scraping Manager's Worker #111 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #112 received a link, https://stackoverflow.com/questions/136097/what-is-the-difference-between-staticmethod-and-classmethod&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/136097/what-is-the-difference-between-staticmethod-and-classmethod&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 194 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/136097/what-is-the-difference-between-staticmethod-and-classmethod HTTP/1.1" 200 74154 +INFO:root:Finished with link https://stackoverflow.com/questions/136097/what-is-the-difference-between-staticmethod-and-classmethod, now marking StackOverflow Scraping Manager's Worker #112 for death. +INFO:root:StackOverflow Scraping Manager's Worker #112 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #113 received a link, https://stackoverflow.com/questions/522563/accessing-the-index-in-for-loops&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/522563/accessing-the-index-in-for-loops&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 167 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/522563/accessing-the-index-in-for-loops HTTP/1.1" 200 63909 +INFO:root:Finished with link https://stackoverflow.com/questions/522563/accessing-the-index-in-for-loops, now marking StackOverflow Scraping Manager's Worker #113 for death. +INFO:root:StackOverflow Scraping Manager's Worker #113 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #114 received a link, https://stackoverflow.com/questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 204 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend HTTP/1.1" 200 63185 +INFO:root:Finished with link https://stackoverflow.com/questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend, now marking StackOverflow Scraping Manager's Worker #114 for death. +INFO:root:StackOverflow Scraping Manager's Worker #114 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #115 received a link, https://stackoverflow.com/questions/509211/understanding-slice-notation&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/509211/understanding-slice-notation&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 163 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/509211/understanding-slice-notation HTTP/1.1" 200 91302 +INFO:root:Finished with link https://stackoverflow.com/questions/509211/understanding-slice-notation, now marking StackOverflow Scraping Manager's Worker #115 for death. +INFO:root:StackOverflow Scraping Manager's Worker #115 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #116 received a link, https://stackoverflow.com/questions/423379/using-global-variables-in-a-function&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/423379/using-global-variables-in-a-function&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 171 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/423379/using-global-variables-in-a-function HTTP/1.1" 200 64058 +INFO:root:Finished with link https://stackoverflow.com/questions/423379/using-global-variables-in-a-function, now marking StackOverflow Scraping Manager's Worker #116 for death. +INFO:root:StackOverflow Scraping Manager's Worker #116 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #117 received a link, https://stackoverflow.com/questions/3294889/iterating-over-dictionaries-using-for-loops&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3294889/iterating-over-dictionaries-using-for-loops&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 179 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3294889/iterating-over-dictionaries-using-for-loops HTTP/1.1" 200 47904 +INFO:root:Finished with link https://stackoverflow.com/questions/3294889/iterating-over-dictionaries-using-for-loops, now marking StackOverflow Scraping Manager's Worker #117 for death. +INFO:root:StackOverflow Scraping Manager's Worker #117 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #118 received a link, https://stackoverflow.com/questions/176918/finding-the-index-of-an-item-given-a-list-containing-it-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/176918/finding-the-index-of-an-item-given-a-list-containing-it-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 200 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/176918/finding-the-index-of-an-item-given-a-list-containing-it-in-python HTTP/1.1" 200 75567 +INFO:root:Finished with link https://stackoverflow.com/questions/176918/finding-the-index-of-an-item-given-a-list-containing-it-in-python, now marking StackOverflow Scraping Manager's Worker #118 for death. +INFO:root:StackOverflow Scraping Manager's Worker #118 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #119 received a link, https://stackoverflow.com/questions/952914/how-to-make-a-flat-list-out-of-list-of-lists&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/952914/how-to-make-a-flat-list-out-of-list-of-lists&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 179 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/952914/how-to-make-a-flat-list-out-of-list-of-lists HTTP/1.1" 200 93157 +INFO:root:Finished with link https://stackoverflow.com/questions/952914/how-to-make-a-flat-list-out-of-list-of-lists, now marking StackOverflow Scraping Manager's Worker #119 for death. +INFO:root:StackOverflow Scraping Manager's Worker #119 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #120 received a link, https://stackoverflow.com/questions/1602934/check-if-a-given-key-already-exists-in-a-dictionary&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1602934/check-if-a-given-key-already-exists-in-a-dictionary&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 187 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1602934/check-if-a-given-key-already-exists-in-a-dictionary HTTP/1.1" 200 65632 +INFO:root:Finished with link https://stackoverflow.com/questions/1602934/check-if-a-given-key-already-exists-in-a-dictionary, now marking StackOverflow Scraping Manager's Worker #120 for death. +INFO:root:StackOverflow Scraping Manager's Worker #120 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #121 received a link, https://stackoverflow.com/questions/739654/how-to-make-a-chain-of-function-decorators&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/739654/how-to-make-a-chain-of-function-decorators&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 177 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/739654/how-to-make-a-chain-of-function-decorators HTTP/1.1" 200 78947 +INFO:root:Finished with link https://stackoverflow.com/questions/739654/how-to-make-a-chain-of-function-decorators, now marking StackOverflow Scraping Manager's Worker #121 for death. +INFO:root:StackOverflow Scraping Manager's Worker #121 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #122 received a link, https://stackoverflow.com/questions/510348/how-can-i-make-a-time-delay-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/510348/how-can-i-make-a-time-delay-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 172 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/510348/how-can-i-make-a-time-delay-in-python HTTP/1.1" 200 50889 +INFO:root:Finished with link https://stackoverflow.com/questions/510348/how-can-i-make-a-time-delay-in-python, now marking StackOverflow Scraping Manager's Worker #122 for death. +INFO:root:StackOverflow Scraping Manager's Worker #122 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #123 received a link, https://stackoverflow.com/questions/415511/how-to-get-the-current-time-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/415511/how-to-get-the-current-time-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 172 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/415511/how-to-get-the-current-time-in-python HTTP/1.1" 200 74327 +INFO:root:Finished with link https://stackoverflow.com/questions/415511/how-to-get-the-current-time-in-python, now marking StackOverflow Scraping Manager's Worker #123 for death. +INFO:root:StackOverflow Scraping Manager's Worker #123 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #124 received a link, https://stackoverflow.com/questions/1436703/difference-between-str-and-repr&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1436703/difference-between-str-and-repr&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 167 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1436703/difference-between-str-and-repr HTTP/1.1" 200 71377 +INFO:root:Finished with link https://stackoverflow.com/questions/1436703/difference-between-str-and-repr, now marking StackOverflow Scraping Manager's Worker #124 for death. +INFO:root:StackOverflow Scraping Manager's Worker #124 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #125 received a link, https://stackoverflow.com/questions/4750806/how-do-i-install-pip-on-windows&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/4750806/how-do-i-install-pip-on-windows&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 167 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/4750806/how-do-i-install-pip-on-windows HTTP/1.1" 200 94340 +INFO:root:Finished with link https://stackoverflow.com/questions/4750806/how-do-i-install-pip-on-windows, now marking StackOverflow Scraping Manager's Worker #125 for death. +INFO:root:StackOverflow Scraping Manager's Worker #125 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #126 received a link, https://stackoverflow.com/questions/6470428/catch-multiple-exceptions-in-one-line-except-block&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/6470428/catch-multiple-exceptions-in-one-line-except-block&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 186 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/6470428/catch-multiple-exceptions-in-one-line-except-block HTTP/1.1" 200 39882 +INFO:root:Finished with link https://stackoverflow.com/questions/6470428/catch-multiple-exceptions-in-one-line-except-block, now marking StackOverflow Scraping Manager's Worker #126 for death. +INFO:root:StackOverflow Scraping Manager's Worker #126 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #127 received a link, https://stackoverflow.com/questions/986006/how-do-i-pass-a-variable-by-reference&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/986006/how-do-i-pass-a-variable-by-reference&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 172 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/986006/how-do-i-pass-a-variable-by-reference HTTP/1.1" 200 94681 +INFO:root:Finished with link https://stackoverflow.com/questions/986006/how-do-i-pass-a-variable-by-reference, now marking StackOverflow Scraping Manager's Worker #127 for death. +INFO:root:StackOverflow Scraping Manager's Worker #127 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #128 received a link, https://stackoverflow.com/questions/1132941/least-astonishment-and-the-mutable-default-argument&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1132941/least-astonishment-and-the-mutable-default-argument&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 187 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1132941/least-astonishment-and-the-mutable-default-argument HTTP/1.1" 200 119301 +INFO:root:Finished with link https://stackoverflow.com/questions/1132941/least-astonishment-and-the-mutable-default-argument, now marking StackOverflow Scraping Manager's Worker #128 for death. +INFO:root:StackOverflow Scraping Manager's Worker #128 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #129 received a link, https://stackoverflow.com/questions/1024847/add-new-keys-to-a-dictionary&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1024847/add-new-keys-to-a-dictionary&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 164 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1024847/add-new-keys-to-a-dictionary HTTP/1.1" 200 57038 +INFO:root:Finished with link https://stackoverflow.com/questions/1024847/add-new-keys-to-a-dictionary, now marking StackOverflow Scraping Manager's Worker #129 for death. +INFO:root:StackOverflow Scraping Manager's Worker #129 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #130 received a link, https://stackoverflow.com/questions/576169/understanding-python-super-with-init-methods&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/576169/understanding-python-super-with-init-methods&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 179 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/576169/understanding-python-super-with-init-methods HTTP/1.1" 200 52993 +INFO:root:Finished with link https://stackoverflow.com/questions/576169/understanding-python-super-with-init-methods, now marking StackOverflow Scraping Manager's Worker #130 for death. +INFO:root:StackOverflow Scraping Manager's Worker #130 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #131 received a link, https://stackoverflow.com/questions/2612802/how-to-clone-or-copy-a-list&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2612802/how-to-clone-or-copy-a-list&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 163 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2612802/how-to-clone-or-copy-a-list HTTP/1.1" 200 63834 +INFO:root:Finished with link https://stackoverflow.com/questions/2612802/how-to-clone-or-copy-a-list, now marking StackOverflow Scraping Manager's Worker #131 for death. +INFO:root:StackOverflow Scraping Manager's Worker #131 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #132 received a link, https://stackoverflow.com/questions/101754/is-there-a-way-to-run-python-on-android&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/101754/is-there-a-way-to-run-python-on-android&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 174 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/101754/is-there-a-way-to-run-python-on-android HTTP/1.1" 200 78497 +INFO:root:Finished with link https://stackoverflow.com/questions/101754/is-there-a-way-to-run-python-on-android, now marking StackOverflow Scraping Manager's Worker #132 for death. +INFO:root:StackOverflow Scraping Manager's Worker #132 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #133 received a link, https://stackoverflow.com/questions/1720421/how-do-i-concatenate-two-lists-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1720421/how-do-i-concatenate-two-lists-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 176 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1720421/how-do-i-concatenate-two-lists-in-python HTTP/1.1" 200 77773 +INFO:root:Finished with link https://stackoverflow.com/questions/1720421/how-do-i-concatenate-two-lists-in-python, now marking StackOverflow Scraping Manager's Worker #133 for death. +INFO:root:StackOverflow Scraping Manager's Worker #133 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #134 received a link, https://stackoverflow.com/questions/379906/how-do-i-parse-a-string-to-a-float-or-int&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/379906/how-do-i-parse-a-string-to-a-float-or-int&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 176 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/379906/how-do-i-parse-a-string-to-a-float-or-int HTTP/1.1" 200 72628 +INFO:root:Finished with link https://stackoverflow.com/questions/379906/how-do-i-parse-a-string-to-a-float-or-int, now marking StackOverflow Scraping Manager's Worker #134 for death. +INFO:root:StackOverflow Scraping Manager's Worker #134 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #135 received a link, https://stackoverflow.com/questions/3277503/how-to-read-a-file-line-by-line-into-a-list&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3277503/how-to-read-a-file-line-by-line-into-a-list&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 179 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3277503/how-to-read-a-file-line-by-line-into-a-list HTTP/1.1" 200 84330 +INFO:root:Finished with link https://stackoverflow.com/questions/3277503/how-to-read-a-file-line-by-line-into-a-list, now marking StackOverflow Scraping Manager's Worker #135 for death. +INFO:root:StackOverflow Scraping Manager's Worker #135 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #136 received a link, https://stackoverflow.com/questions/36901/what-does-double-star-asterisk-and-star-asterisk-do-for-parameters&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/36901/what-does-double-star-asterisk-and-star-asterisk-do-for-parameters&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 200 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/36901/what-does-double-star-asterisk-and-star-asterisk-do-for-parameters HTTP/1.1" 200 65827 +INFO:root:Finished with link https://stackoverflow.com/questions/36901/what-does-double-star-asterisk-and-star-asterisk-do-for-parameters, now marking StackOverflow Scraping Manager's Worker #136 for death. +INFO:root:StackOverflow Scraping Manager's Worker #136 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #137 received a link, https://stackoverflow.com/questions/123198/how-do-i-copy-a-file-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/123198/how-do-i-copy-a-file-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 165 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/123198/how-do-i-copy-a-file-in-python HTTP/1.1" 200 74350 +INFO:root:Finished with link https://stackoverflow.com/questions/123198/how-do-i-copy-a-file-in-python, now marking StackOverflow Scraping Manager's Worker #137 for death. +INFO:root:StackOverflow Scraping Manager's Worker #137 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #138 received a link, https://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 183 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks HTTP/1.1" 200 95623 +INFO:root:Finished with link https://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks, now marking StackOverflow Scraping Manager's Worker #138 for death. +INFO:root:StackOverflow Scraping Manager's Worker #138 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #139 received a link, https://stackoverflow.com/questions/2052390/manually-raising-throwing-an-exception-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2052390/manually-raising-throwing-an-exception-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 184 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2052390/manually-raising-throwing-an-exception-in-python HTTP/1.1" 200 49042 +INFO:root:Finished with link https://stackoverflow.com/questions/2052390/manually-raising-throwing-an-exception-in-python, now marking StackOverflow Scraping Manager's Worker #139 for death. +INFO:root:StackOverflow Scraping Manager's Worker #139 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #140 received a link, https://stackoverflow.com/questions/466345/converting-string-into-datetime&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/466345/converting-string-into-datetime&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 166 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/466345/converting-string-into-datetime HTTP/1.1" 200 66251 +INFO:root:Finished with link https://stackoverflow.com/questions/466345/converting-string-into-datetime, now marking StackOverflow Scraping Manager's Worker #140 for death. +INFO:root:StackOverflow Scraping Manager's Worker #140 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #141 received a link, https://stackoverflow.com/questions/663171/how-to-substring-a-string-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/663171/how-to-substring-a-string-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 170 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/663171/how-to-substring-a-string-in-python HTTP/1.1" 200 50855 +INFO:root:Finished with link https://stackoverflow.com/questions/663171/how-to-substring-a-string-in-python, now marking StackOverflow Scraping Manager's Worker #141 for death. +INFO:root:StackOverflow Scraping Manager's Worker #141 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #142 received a link, https://stackoverflow.com/questions/448271/what-is-init-py-for&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/448271/what-is-init-py-for&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 154 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/448271/what-is-init-py-for HTTP/1.1" 200 53293 +INFO:root:Finished with link https://stackoverflow.com/questions/448271/what-is-init-py-for, now marking StackOverflow Scraping Manager's Worker #142 for death. +INFO:root:StackOverflow Scraping Manager's Worker #142 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #143 received a link, https://stackoverflow.com/questions/5137497/find-current-directory-and-files-directory&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/5137497/find-current-directory-and-files-directory&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 178 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/5137497/find-current-directory-and-files-directory HTTP/1.1" 200 55292 +INFO:root:Finished with link https://stackoverflow.com/questions/5137497/find-current-directory-and-files-directory, now marking StackOverflow Scraping Manager's Worker #143 for death. +INFO:root:StackOverflow Scraping Manager's Worker #143 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #144 received a link, https://stackoverflow.com/questions/287871/how-to-print-colored-text-in-terminal-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/287871/how-to-print-colored-text-in-terminal-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 182 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/287871/how-to-print-colored-text-in-terminal-in-python HTTP/1.1" 200 93416 +INFO:root:Finished with link https://stackoverflow.com/questions/287871/how-to-print-colored-text-in-terminal-in-python, now marking StackOverflow Scraping Manager's Worker #144 for death. +INFO:root:StackOverflow Scraping Manager's Worker #144 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #145 received a link, https://stackoverflow.com/questions/6797984/how-do-i-lowercase-a-string-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/6797984/how-do-i-lowercase-a-string-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 173 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/6797984/how-do-i-lowercase-a-string-in-python HTTP/1.1" 200 39999 +INFO:root:Finished with link https://stackoverflow.com/questions/6797984/how-do-i-lowercase-a-string-in-python, now marking StackOverflow Scraping Manager's Worker #145 for death. +INFO:root:StackOverflow Scraping Manager's Worker #145 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #146 received a link, https://stackoverflow.com/questions/1712227/how-do-i-get-the-number-of-elements-in-a-list&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1712227/how-do-i-get-the-number-of-elements-in-a-list&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 181 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1712227/how-do-i-get-the-number-of-elements-in-a-list HTTP/1.1" 200 45865 +INFO:root:Finished with link https://stackoverflow.com/questions/1712227/how-do-i-get-the-number-of-elements-in-a-list, now marking StackOverflow Scraping Manager's Worker #146 for death. +INFO:root:StackOverflow Scraping Manager's Worker #146 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #147 received a link, https://stackoverflow.com/questions/6996603/delete-a-file-or-folder&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/6996603/delete-a-file-or-folder&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 159 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/6996603/delete-a-file-or-folder HTTP/1.1" 200 50376 +INFO:root:Finished with link https://stackoverflow.com/questions/6996603/delete-a-file-or-folder, now marking StackOverflow Scraping Manager's Worker #147 for death. +INFO:root:StackOverflow Scraping Manager's Worker #147 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #148 received a link, https://stackoverflow.com/questions/606191/convert-bytes-to-a-string&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/606191/convert-bytes-to-a-string&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 160 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/606191/convert-bytes-to-a-string HTTP/1.1" 200 65966 +INFO:root:Finished with link https://stackoverflow.com/questions/606191/convert-bytes-to-a-string, now marking StackOverflow Scraping Manager's Worker #148 for death. +INFO:root:StackOverflow Scraping Manager's Worker #148 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #149 received a link, https://stackoverflow.com/questions/68645/are-static-class-variables-possible-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/68645/are-static-class-variables-possible-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 179 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/68645/are-static-class-variables-possible-in-python HTTP/1.1" 200 70185 +INFO:root:Finished with link https://stackoverflow.com/questions/68645/are-static-class-variables-possible-in-python, now marking StackOverflow Scraping Manager's Worker #149 for death. +INFO:root:StackOverflow Scraping Manager's Worker #149 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #150 received a link, https://stackoverflow.com/questions/930397/getting-the-last-element-of-a-list&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/930397/getting-the-last-element-of-a-list&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 169 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/930397/getting-the-last-element-of-a-list HTTP/1.1" 200 49875 +INFO:root:Finished with link https://stackoverflow.com/questions/930397/getting-the-last-element-of-a-list, now marking StackOverflow Scraping Manager's Worker #150 for death. +INFO:root:StackOverflow Scraping Manager's Worker #150 is dead, no need to kill prematurely. +WARNING:root:StackOverflow Scraping Manager's Worker #151 received a link, https://stackoverflow.com/questions/2720014/how-to-upgrade-all-python-packages-with-pip&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2720014/how-to-upgrade-all-python-packages-with-pip&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 179 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2720014/how-to-upgrade-all-python-packages-with-pip HTTP/1.1" 200 97398 +INFO:root:Parent link https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow created. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 +DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 200 255 +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 +DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 200 255 +INFO:root:Starting StackExchange API Manager. +INFO:root:Starting StackOverflow Scraping Manager. +INFO:root:New killer, StackOverflow Scraping Manager's Thread Killer, spawned. +INFO:root:New killer, StackExchange API Manager's Thread Killer, spawned. +INFO:root:New worker, StackExchange API Manager's Worker #0, spawned for task https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 +DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 200 15725 +INFO:root:New worker, StackOverflow Scraping Manager's Worker #0, spawned for task https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #1, spawned for task https://stackoverflow.com/questions/394809/does-python-have-a-ternary-conditional-operator. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #2, spawned for task https://stackoverflow.com/questions/100003/what-are-metaclasses-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #3, spawned for task https://stackoverflow.com/questions/419163/what-does-if-name-main-do. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #4, spawned for task https://stackoverflow.com/questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #5, spawned for task https://stackoverflow.com/questions/89228/calling-an-external-command-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #6, spawned for task https://stackoverflow.com/questions/38987/how-to-merge-two-dictionaries-in-a-single-expression. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #7, spawned for task https://stackoverflow.com/questions/273192/how-can-i-safely-create-a-nested-directory. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #8, spawned for task https://stackoverflow.com/questions/3437059/does-python-have-a-string-contains-substring-method. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #9, spawned for task https://stackoverflow.com/questions/3207219/how-do-i-list-all-files-of-a-directory. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #10, spawned for task https://stackoverflow.com/questions/613183/how-do-i-sort-a-dictionary-by-value. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #11, spawned for task https://stackoverflow.com/questions/53513/how-do-i-check-if-a-list-is-empty. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #12, spawned for task https://stackoverflow.com/questions/136097/what-is-the-difference-between-staticmethod-and-classmethod. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #13, spawned for task https://stackoverflow.com/questions/522563/accessing-the-index-in-for-loops. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #14, spawned for task https://stackoverflow.com/questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #15, spawned for task https://stackoverflow.com/questions/509211/understanding-slice-notation. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #16, spawned for task https://stackoverflow.com/questions/423379/using-global-variables-in-a-function. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #17, spawned for task https://stackoverflow.com/questions/3294889/iterating-over-dictionaries-using-for-loops. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #18, spawned for task https://stackoverflow.com/questions/176918/finding-the-index-of-an-item-given-a-list-containing-it-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #19, spawned for task https://stackoverflow.com/questions/952914/how-to-make-a-flat-list-out-of-list-of-lists. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #20, spawned for task https://stackoverflow.com/questions/1602934/check-if-a-given-key-already-exists-in-a-dictionary. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #21, spawned for task https://stackoverflow.com/questions/739654/how-to-make-a-chain-of-function-decorators. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #22, spawned for task https://stackoverflow.com/questions/510348/how-can-i-make-a-time-delay-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #23, spawned for task https://stackoverflow.com/questions/415511/how-to-get-the-current-time-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #24, spawned for task https://stackoverflow.com/questions/1436703/difference-between-str-and-repr. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #25, spawned for task https://stackoverflow.com/questions/4750806/how-do-i-install-pip-on-windows. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #26, spawned for task https://stackoverflow.com/questions/6470428/catch-multiple-exceptions-in-one-line-except-block. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #27, spawned for task https://stackoverflow.com/questions/986006/how-do-i-pass-a-variable-by-reference. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #28, spawned for task https://stackoverflow.com/questions/1132941/least-astonishment-and-the-mutable-default-argument. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #29, spawned for task https://stackoverflow.com/questions/1024847/add-new-keys-to-a-dictionary. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #30, spawned for task https://stackoverflow.com/questions/576169/understanding-python-super-with-init-methods. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #31, spawned for task https://stackoverflow.com/questions/2612802/how-to-clone-or-copy-a-list. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #32, spawned for task https://stackoverflow.com/questions/101754/is-there-a-way-to-run-python-on-android. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #33, spawned for task https://stackoverflow.com/questions/1720421/how-do-i-concatenate-two-lists-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #34, spawned for task https://stackoverflow.com/questions/379906/how-do-i-parse-a-string-to-a-float-or-int. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #35, spawned for task https://stackoverflow.com/questions/3277503/how-to-read-a-file-line-by-line-into-a-list. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #36, spawned for task https://stackoverflow.com/questions/36901/what-does-double-star-asterisk-and-star-asterisk-do-for-parameters. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #37, spawned for task https://stackoverflow.com/questions/123198/how-do-i-copy-a-file-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #38, spawned for task https://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #39, spawned for task https://stackoverflow.com/questions/2052390/manually-raising-throwing-an-exception-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #40, spawned for task https://stackoverflow.com/questions/466345/converting-string-into-datetime. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #41, spawned for task https://stackoverflow.com/questions/663171/how-to-substring-a-string-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #42, spawned for task https://stackoverflow.com/questions/448271/what-is-init-py-for. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #43, spawned for task https://stackoverflow.com/questions/5137497/find-current-directory-and-files-directory. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #44, spawned for task https://stackoverflow.com/questions/287871/how-to-print-colored-text-in-terminal-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #45, spawned for task https://stackoverflow.com/questions/6797984/how-do-i-lowercase-a-string-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #46, spawned for task https://stackoverflow.com/questions/1712227/how-do-i-get-the-number-of-elements-in-a-list. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #47, spawned for task https://stackoverflow.com/questions/6996603/delete-a-file-or-folder. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #48, spawned for task https://stackoverflow.com/questions/606191/convert-bytes-to-a-string. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #49, spawned for task https://stackoverflow.com/questions/68645/are-static-class-variables-possible-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #50, spawned for task https://stackoverflow.com/questions/930397/getting-the-last-element-of-a-list. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #51, spawned for task https://stackoverflow.com/questions/2720014/how-to-upgrade-all-python-packages-with-pip. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #52, spawned for task https://stackoverflow.com/questions/30081275/why-is-1000000000000000-in-range1000000000000001-so-fast-in-python-3. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #53, spawned for task https://stackoverflow.com/questions/60208/replacements-for-switch-statement-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #54, spawned for task https://stackoverflow.com/questions/4906977/how-to-access-environment-variable-values. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #55, spawned for task https://stackoverflow.com/questions/9371238/why-is-reading-lines-from-stdin-much-slower-in-c-than-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #56, spawned for task https://stackoverflow.com/questions/17271319/how-do-i-install-pip-on-macos-or-os-x. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #57, spawned for task https://stackoverflow.com/questions/493386/how-to-print-without-newline-or-space. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #58, spawned for task https://stackoverflow.com/questions/72899/how-do-i-sort-a-list-of-dictionaries-by-a-value-of-the-dictionary. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #59, spawned for task https://stackoverflow.com/questions/2225038/determine-the-type-of-an-object. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #60, spawned for task https://stackoverflow.com/questions/493819/python-join-why-is-it-string-joinlist-instead-of-list-joinstring. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #61, spawned for task https://stackoverflow.com/questions/735975/static-methods-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #62, spawned for task https://stackoverflow.com/questions/306400/how-to-randomly-select-an-item-from-a-list. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #63, spawned for task https://stackoverflow.com/questions/332289/how-do-you-change-the-size-of-figures-drawn-with-matplotlib. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #64, spawned for task https://stackoverflow.com/questions/275018/how-can-i-remove-a-trailing-newline. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #65, spawned for task https://stackoverflow.com/questions/12179271/meaning-of-classmethod-and-staticmethod-for-beginner. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #66, spawned for task https://stackoverflow.com/questions/3061/calling-a-function-of-a-module-by-using-its-name-a-string. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #67, spawned for task https://stackoverflow.com/questions/11346283/renaming-columns-in-pandas. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #68, spawned for task https://stackoverflow.com/questions/354038/how-do-i-check-if-a-string-is-a-number-float. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #69, spawned for task https://stackoverflow.com/questions/17071871/select-rows-from-a-dataframe-based-on-values-in-a-column-in-pandas. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #70, spawned for task https://stackoverflow.com/questions/101268/hidden-features-of-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #71, spawned for task https://stackoverflow.com/questions/455612/limiting-floats-to-two-decimal-points. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #72, spawned for task https://stackoverflow.com/questions/11277432/how-to-remove-a-key-from-a-python-dictionary. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #73, spawned for task https://stackoverflow.com/questions/610883/how-to-know-if-an-object-has-an-attribute-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #74, spawned for task https://stackoverflow.com/questions/4706499/how-do-you-append-to-a-file-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #75, spawned for task https://stackoverflow.com/questions/2835559/why-cant-python-parse-this-json-data. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #76, spawned for task https://stackoverflow.com/questions/2600191/how-can-i-count-the-occurrences-of-a-list-item. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #77, spawned for task https://stackoverflow.com/questions/990754/how-to-leave-exit-deactivate-a-python-virtualenv. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #78, spawned for task https://stackoverflow.com/questions/1450393/how-do-you-read-from-stdin. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #79, spawned for task https://stackoverflow.com/questions/3394835/use-of-args-and-kwargs. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #80, spawned for task https://stackoverflow.com/questions/402504/how-to-determine-a-python-variables-type. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #81, spawned for task https://stackoverflow.com/questions/16476924/how-to-iterate-over-rows-in-a-dataframe-in-pandas. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #82, spawned for task https://stackoverflow.com/questions/5082452/string-formatting-vs-format. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #83, spawned for task https://stackoverflow.com/questions/627435/how-to-remove-an-element-from-a-list-by-index. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #84, spawned for task https://stackoverflow.com/questions/931092/reverse-a-string-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #85, spawned for task https://stackoverflow.com/questions/961632/converting-integer-to-string. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #86, spawned for task https://stackoverflow.com/questions/510972/getting-the-class-name-of-an-instance. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #87, spawned for task https://stackoverflow.com/questions/5466451/how-can-i-print-literal-curly-brace-characters-in-python-string-and-also-use-fo. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #88, spawned for task https://stackoverflow.com/questions/339007/nicest-way-to-pad-zeroes-to-a-string. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #89, spawned for task https://stackoverflow.com/questions/2257441/random-string-generation-with-upper-case-letters-and-digits. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #90, spawned for task https://stackoverflow.com/questions/9573244/how-to-check-if-the-string-is-empty. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #91, spawned for task https://stackoverflow.com/questions/1747817/create-a-dictionary-with-list-comprehension. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #92, spawned for task https://stackoverflow.com/questions/9942594/unicodeencodeerror-ascii-codec-cant-encode-character-u-xa0-in-position-20. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #93, spawned for task https://stackoverflow.com/questions/5574702/how-to-print-to-stderr-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #94, spawned for task https://stackoverflow.com/questions/2846653/how-to-use-threading-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #95, spawned for task https://stackoverflow.com/questions/3996904/generate-random-integers-between-0-and-9. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #96, spawned for task https://stackoverflow.com/questions/5844672/delete-an-element-from-a-dictionary. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #97, spawned for task https://stackoverflow.com/questions/1301346/what-is-the-meaning-of-a-single-and-a-double-underscore-before-an-object-name. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #98, spawned for task https://stackoverflow.com/questions/36932/how-can-i-represent-an-enum-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #99, spawned for task https://stackoverflow.com/questions/582336/how-can-you-profile-a-python-script. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 +DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 200 15723 +WARNING:root:Request count for key RGaU7lYPN8L5KbnIfkxmGQ(( is off by 1 +INFO:root:New worker, StackOverflow Scraping Manager's Worker #100, spawned for task https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #101, spawned for task https://stackoverflow.com/questions/394809/does-python-have-a-ternary-conditional-operator. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #102, spawned for task https://stackoverflow.com/questions/100003/what-are-metaclasses-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #103, spawned for task https://stackoverflow.com/questions/419163/what-does-if-name-main-do. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #104, spawned for task https://stackoverflow.com/questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #105, spawned for task https://stackoverflow.com/questions/89228/calling-an-external-command-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #106, spawned for task https://stackoverflow.com/questions/38987/how-to-merge-two-dictionaries-in-a-single-expression. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #107, spawned for task https://stackoverflow.com/questions/273192/how-can-i-safely-create-a-nested-directory. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #108, spawned for task https://stackoverflow.com/questions/3437059/does-python-have-a-string-contains-substring-method. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #109, spawned for task https://stackoverflow.com/questions/3207219/how-do-i-list-all-files-of-a-directory. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #110, spawned for task https://stackoverflow.com/questions/613183/how-do-i-sort-a-dictionary-by-value. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #111, spawned for task https://stackoverflow.com/questions/53513/how-do-i-check-if-a-list-is-empty. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #112, spawned for task https://stackoverflow.com/questions/136097/what-is-the-difference-between-staticmethod-and-classmethod. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #113, spawned for task https://stackoverflow.com/questions/522563/accessing-the-index-in-for-loops. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #114, spawned for task https://stackoverflow.com/questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #115, spawned for task https://stackoverflow.com/questions/509211/understanding-slice-notation. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #116, spawned for task https://stackoverflow.com/questions/423379/using-global-variables-in-a-function. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #117, spawned for task https://stackoverflow.com/questions/3294889/iterating-over-dictionaries-using-for-loops. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #118, spawned for task https://stackoverflow.com/questions/176918/finding-the-index-of-an-item-given-a-list-containing-it-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #119, spawned for task https://stackoverflow.com/questions/952914/how-to-make-a-flat-list-out-of-list-of-lists. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #120, spawned for task https://stackoverflow.com/questions/1602934/check-if-a-given-key-already-exists-in-a-dictionary. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #121, spawned for task https://stackoverflow.com/questions/739654/how-to-make-a-chain-of-function-decorators. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #122, spawned for task https://stackoverflow.com/questions/510348/how-can-i-make-a-time-delay-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #123, spawned for task https://stackoverflow.com/questions/415511/how-to-get-the-current-time-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #124, spawned for task https://stackoverflow.com/questions/1436703/difference-between-str-and-repr. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #125, spawned for task https://stackoverflow.com/questions/4750806/how-do-i-install-pip-on-windows. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #126, spawned for task https://stackoverflow.com/questions/6470428/catch-multiple-exceptions-in-one-line-except-block. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #127, spawned for task https://stackoverflow.com/questions/986006/how-do-i-pass-a-variable-by-reference. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #128, spawned for task https://stackoverflow.com/questions/1132941/least-astonishment-and-the-mutable-default-argument. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #129, spawned for task https://stackoverflow.com/questions/1024847/add-new-keys-to-a-dictionary. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #130, spawned for task https://stackoverflow.com/questions/576169/understanding-python-super-with-init-methods. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #131, spawned for task https://stackoverflow.com/questions/2612802/how-to-clone-or-copy-a-list. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #132, spawned for task https://stackoverflow.com/questions/101754/is-there-a-way-to-run-python-on-android. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #133, spawned for task https://stackoverflow.com/questions/1720421/how-do-i-concatenate-two-lists-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #134, spawned for task https://stackoverflow.com/questions/379906/how-do-i-parse-a-string-to-a-float-or-int. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #135, spawned for task https://stackoverflow.com/questions/3277503/how-to-read-a-file-line-by-line-into-a-list. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #136, spawned for task https://stackoverflow.com/questions/36901/what-does-double-star-asterisk-and-star-asterisk-do-for-parameters. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #137, spawned for task https://stackoverflow.com/questions/123198/how-do-i-copy-a-file-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #138, spawned for task https://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #139, spawned for task https://stackoverflow.com/questions/2052390/manually-raising-throwing-an-exception-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #140, spawned for task https://stackoverflow.com/questions/466345/converting-string-into-datetime. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #141, spawned for task https://stackoverflow.com/questions/663171/how-to-substring-a-string-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #142, spawned for task https://stackoverflow.com/questions/448271/what-is-init-py-for. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #143, spawned for task https://stackoverflow.com/questions/5137497/find-current-directory-and-files-directory. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #144, spawned for task https://stackoverflow.com/questions/287871/how-to-print-colored-text-in-terminal-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #145, spawned for task https://stackoverflow.com/questions/6797984/how-do-i-lowercase-a-string-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #146, spawned for task https://stackoverflow.com/questions/1712227/how-do-i-get-the-number-of-elements-in-a-list. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #147, spawned for task https://stackoverflow.com/questions/6996603/delete-a-file-or-folder. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #148, spawned for task https://stackoverflow.com/questions/606191/convert-bytes-to-a-string. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #149, spawned for task https://stackoverflow.com/questions/68645/are-static-class-variables-possible-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #150, spawned for task https://stackoverflow.com/questions/930397/getting-the-last-element-of-a-list. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #151, spawned for task https://stackoverflow.com/questions/2720014/how-to-upgrade-all-python-packages-with-pip. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #152, spawned for task https://stackoverflow.com/questions/30081275/why-is-1000000000000000-in-range1000000000000001-so-fast-in-python-3. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #153, spawned for task https://stackoverflow.com/questions/60208/replacements-for-switch-statement-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #154, spawned for task https://stackoverflow.com/questions/4906977/how-to-access-environment-variable-values. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #155, spawned for task https://stackoverflow.com/questions/9371238/why-is-reading-lines-from-stdin-much-slower-in-c-than-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #156, spawned for task https://stackoverflow.com/questions/17271319/how-do-i-install-pip-on-macos-or-os-x. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #157, spawned for task https://stackoverflow.com/questions/493386/how-to-print-without-newline-or-space. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #158, spawned for task https://stackoverflow.com/questions/72899/how-do-i-sort-a-list-of-dictionaries-by-a-value-of-the-dictionary. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #159, spawned for task https://stackoverflow.com/questions/2225038/determine-the-type-of-an-object. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #160, spawned for task https://stackoverflow.com/questions/493819/python-join-why-is-it-string-joinlist-instead-of-list-joinstring. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #161, spawned for task https://stackoverflow.com/questions/735975/static-methods-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #162, spawned for task https://stackoverflow.com/questions/306400/how-to-randomly-select-an-item-from-a-list. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #163, spawned for task https://stackoverflow.com/questions/332289/how-do-you-change-the-size-of-figures-drawn-with-matplotlib. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #164, spawned for task https://stackoverflow.com/questions/275018/how-can-i-remove-a-trailing-newline. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #165, spawned for task https://stackoverflow.com/questions/12179271/meaning-of-classmethod-and-staticmethod-for-beginner. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #166, spawned for task https://stackoverflow.com/questions/3061/calling-a-function-of-a-module-by-using-its-name-a-string. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #167, spawned for task https://stackoverflow.com/questions/11346283/renaming-columns-in-pandas. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #168, spawned for task https://stackoverflow.com/questions/354038/how-do-i-check-if-a-string-is-a-number-float. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #169, spawned for task https://stackoverflow.com/questions/17071871/select-rows-from-a-dataframe-based-on-values-in-a-column-in-pandas. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #170, spawned for task https://stackoverflow.com/questions/101268/hidden-features-of-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #171, spawned for task https://stackoverflow.com/questions/455612/limiting-floats-to-two-decimal-points. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #172, spawned for task https://stackoverflow.com/questions/11277432/how-to-remove-a-key-from-a-python-dictionary. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #173, spawned for task https://stackoverflow.com/questions/610883/how-to-know-if-an-object-has-an-attribute-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #174, spawned for task https://stackoverflow.com/questions/4706499/how-do-you-append-to-a-file-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #175, spawned for task https://stackoverflow.com/questions/2835559/why-cant-python-parse-this-json-data. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #176, spawned for task https://stackoverflow.com/questions/2600191/how-can-i-count-the-occurrences-of-a-list-item. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #177, spawned for task https://stackoverflow.com/questions/990754/how-to-leave-exit-deactivate-a-python-virtualenv. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #178, spawned for task https://stackoverflow.com/questions/1450393/how-do-you-read-from-stdin. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #179, spawned for task https://stackoverflow.com/questions/3394835/use-of-args-and-kwargs. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #180, spawned for task https://stackoverflow.com/questions/402504/how-to-determine-a-python-variables-type. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #181, spawned for task https://stackoverflow.com/questions/16476924/how-to-iterate-over-rows-in-a-dataframe-in-pandas. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #182, spawned for task https://stackoverflow.com/questions/5082452/string-formatting-vs-format. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #183, spawned for task https://stackoverflow.com/questions/627435/how-to-remove-an-element-from-a-list-by-index. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #184, spawned for task https://stackoverflow.com/questions/931092/reverse-a-string-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #185, spawned for task https://stackoverflow.com/questions/961632/converting-integer-to-string. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #186, spawned for task https://stackoverflow.com/questions/510972/getting-the-class-name-of-an-instance. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #187, spawned for task https://stackoverflow.com/questions/5466451/how-can-i-print-literal-curly-brace-characters-in-python-string-and-also-use-fo. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #188, spawned for task https://stackoverflow.com/questions/339007/nicest-way-to-pad-zeroes-to-a-string. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #189, spawned for task https://stackoverflow.com/questions/2257441/random-string-generation-with-upper-case-letters-and-digits. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #190, spawned for task https://stackoverflow.com/questions/9573244/how-to-check-if-the-string-is-empty. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #191, spawned for task https://stackoverflow.com/questions/1747817/create-a-dictionary-with-list-comprehension. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #192, spawned for task https://stackoverflow.com/questions/9942594/unicodeencodeerror-ascii-codec-cant-encode-character-u-xa0-in-position-20. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #193, spawned for task https://stackoverflow.com/questions/5574702/how-to-print-to-stderr-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #194, spawned for task https://stackoverflow.com/questions/2846653/how-to-use-threading-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #195, spawned for task https://stackoverflow.com/questions/3996904/generate-random-integers-between-0-and-9. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #196, spawned for task https://stackoverflow.com/questions/5844672/delete-an-element-from-a-dictionary. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #197, spawned for task https://stackoverflow.com/questions/1301346/what-is-the-meaning-of-a-single-and-a-double-underscore-before-an-object-name. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #198, spawned for task https://stackoverflow.com/questions/36932/how-can-i-represent-an-enum-in-python. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #199, spawned for task https://stackoverflow.com/questions/582336/how-can-you-profile-a-python-script. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/231767/what-does-the-yield-keyword-do&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 165 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/231767/what-does-the-yield-keyword-do HTTP/1.1" 200 107016 +INFO:root:Finished with link https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do, now marking StackOverflow Scraping Manager's Worker #0 for death. +INFO:root:StackOverflow Scraping Manager's Worker #0 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/394809/does-python-have-a-ternary-conditional-operator&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 182 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/394809/does-python-have-a-ternary-conditional-operator HTTP/1.1" 200 74458 +INFO:root:Finished with link https://stackoverflow.com/questions/394809/does-python-have-a-ternary-conditional-operator, now marking StackOverflow Scraping Manager's Worker #1 for death. +INFO:root:StackOverflow Scraping Manager's Worker #1 is dead, no need to kill prematurely. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/100003/what-are-metaclasses-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 165 +DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/100003/what-are-metaclasses-in-python HTTP/1.1" 200 78849 +INFO:root:Finished with link https://stackoverflow.com/questions/100003/what-are-metaclasses-in-python, now marking StackOverflow Scraping Manager's Worker #2 for death. +INFO:root:StackOverflow Scraping Manager's Worker #2 is dead, no need to kill prematurely. +INFO:root:Parent link https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow created. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 +DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 200 255 +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 +DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 200 255 +INFO:root:Starting StackExchange API Manager. +INFO:root:Starting StackOverflow Scraping Manager. +INFO:root:New killer, StackOverflow Scraping Manager's Thread Killer, spawned. +INFO:root:New killer, StackExchange API Manager's Thread Killer, spawned. +INFO:root:New worker, StackExchange API Manager's Worker #0, spawned for task https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow. +INFO:root:Parent link https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow created. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 +DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 200 254 +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 +DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 200 255 +INFO:root:Starting StackExchange API Manager. +INFO:root:Starting StackOverflow Scraping Manager. +INFO:root:New killer, StackExchange API Manager's Thread Killer, spawned. +INFO:root:New worker, StackExchange API Manager's Worker #0, spawned for task https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow. +INFO:root:New killer, StackOverflow Scraping Manager's Thread Killer, spawned. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 +DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow&page=0&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 400 71 +CRITICAL:root:Unexpected error caught in StackExchange API Manager's Worker #0 after makingrequest with https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow&page=0. +[None] +Now ending process. +INFO:root:Parent link https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow created. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 +DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 200 254 +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 +DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 200 254 +INFO:root:Starting StackExchange API Manager. +INFO:root:Starting StackOverflow Scraping Manager. +INFO:root:New killer, StackExchange API Manager's Thread Killer, spawned. +INFO:root:New killer, StackOverflow Scraping Manager's Thread Killer, spawned. +INFO:root:New worker, StackExchange API Manager's Worker #0, spawned. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 +DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow&page=0&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 400 71 +CRITICAL:root:Unexpected error caught in StackExchange API Manager's Worker #0 after makingrequest with https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow&page=0. +[None] +Now ending process. +INFO:root:Parent link https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow created. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 +DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 200 255 +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 +DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 200 255 +INFO:root:Starting StackExchange API Manager. +INFO:root:Starting StackOverflow Scraping Manager. +INFO:root:New killer, StackOverflow Scraping Manager's Thread Killer, spawned. +INFO:root:New killer, StackExchange API Manager's Thread Killer, spawned. +INFO:root:New worker, StackExchange API Manager's Worker #0, spawned. +DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 +DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 200 15745 +INFO:root:New worker, StackOverflow Scraping Manager's Worker #0, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #1, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #2, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #3, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #4, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #5, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #6, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #7, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #8, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #9, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #10, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #11, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #12, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #13, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #14, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #15, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #16, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #17, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #18, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #19, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #20, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #21, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #22, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #23, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #24, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #25, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #26, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #27, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #28, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #29, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #30, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #31, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #32, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #33, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #34, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #35, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #36, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #37, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #38, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #39, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #40, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #41, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #42, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #43, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #44, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #45, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #46, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #47, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #48, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #49, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #50, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #51, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #52, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #53, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #54, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #55, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #56, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #57, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #58, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #59, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #60, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #61, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #62, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #63, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #64, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #65, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #66, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #67, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #68, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #69, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #70, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #71, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #72, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #73, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #74, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #75, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #76, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #77, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #78, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #79, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #80, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #81, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #82, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #83, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #84, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #85, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #86, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #87, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #88, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #89, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #90, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #91, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #92, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #93, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #94, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #95, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #96, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #97, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #98, spawned. +INFO:root:New worker, StackOverflow Scraping Manager's Worker #99, spawned. diff --git a/stackoversight/scraping/scraper.py b/stackoversight/scraping/scraper.py index 5b77936..690dd08 100644 --- a/stackoversight/scraping/scraper.py +++ b/stackoversight/scraping/scraper.py @@ -12,6 +12,8 @@ from stackoversight.scraping.thread_executioner import ThreadExecutioner # For logging import logging +# For time stamp on log +import time class StackOversight(object): @@ -78,11 +80,13 @@ def scrape_parent_link(link: str, used_parents: Queue, site: StackOverflow, outp current_thread_name = threading.current_thread().getName() has_more = True response = None + page = 0 try: while has_more: try: - # TODO: make sure actually incrementing page + # link += f'&{StackOverflow.fields["page"]}={page}' + response = site.get_child_links(link, pause=True) except SystemExit: raise @@ -99,9 +103,12 @@ def scrape_parent_link(link: str, used_parents: Queue, site: StackOverflow, outp if not has_more: logging.info(f'Finished with link {link}, now marking {current_thread_name} for death.') - used_parents.put(threading.currentThread()) + used_parents.put(threading.currentThread()) break + else: + page += 1 + except SystemExit: logging.info(f'System exit exception raised, {current_thread_name} successfully killed.') @@ -145,7 +152,7 @@ def scrape_child_link(self, link: str, used_children: Queue, site: StackOverflow # for debugging only -logging.basicConfig(filename='scraper.log', level=logging.DEBUG) +logging.basicConfig(filename=f'scraper.{time.strftime("%Y%m%d-%H%M%S")}.log', level=logging.DEBUG) keys = ['RGaU7lYPN8L5KbnIfkxmGQ((', '1yfsxJa1AC*GlxN6RSemCQ(('] From d45d258c188cae983f422d3d583307244a04626b Mon Sep 17 00:00:00 2001 From: Ash Date: Wed, 24 Jul 2019 15:52:56 +0200 Subject: [PATCH 8/9] Proud to say it all seems to be working fine. Multithreading is done. Logging is done. Can improve later but for now just need to let it run and get some data! --- stackoversight/scraping/scraper.py | 6 ++---- stackoversight/scraping/thread_executioner.py | 3 +-- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/stackoversight/scraping/scraper.py b/stackoversight/scraping/scraper.py index 690dd08..ed96a3b 100644 --- a/stackoversight/scraping/scraper.py +++ b/stackoversight/scraping/scraper.py @@ -80,14 +80,12 @@ def scrape_parent_link(link: str, used_parents: Queue, site: StackOverflow, outp current_thread_name = threading.current_thread().getName() has_more = True response = None - page = 0 + page = 1 try: while has_more: try: - # link += f'&{StackOverflow.fields["page"]}={page}' - - response = site.get_child_links(link, pause=True) + response = site.get_child_links(link + f'&{StackOverflow.fields["page"]}={page}', pause=True) except SystemExit: raise except: diff --git a/stackoversight/scraping/thread_executioner.py b/stackoversight/scraping/thread_executioner.py index 3c46ff7..85532ee 100644 --- a/stackoversight/scraping/thread_executioner.py +++ b/stackoversight/scraping/thread_executioner.py @@ -47,13 +47,12 @@ def execute(target, tasks: Queue, *args): while True: task = tasks.get(block=True) - print(task) worker = threading.Thread(target=target, args=(task, hit_queue, *args), daemon=True) worker.setName(f'{current_thread_name}\'s Worker #{worker_count}') worker.start() - logging.info(f'New worker, {worker.getName()}, spawned.') + logging.info(f'New worker, {worker.getName()}, spawned for task {task}.') worker_count += 1 except SystemExit: From d7c145c1cdd81c36cc83a0b9f5edc4bccf4e3783 Mon Sep 17 00:00:00 2001 From: Ash Date: Wed, 24 Jul 2019 21:10:40 +0200 Subject: [PATCH 9/9] Cleaned up a bit and ready for java code scraping too --- stackoversight/scraping/abstractsite.py | 18 +- stackoversight/scraping/read_write_Lock.py | 9 +- stackoversight/scraping/release_heap.py | 9 +- stackoversight/scraping/scraper.log | 1808 ----------------- stackoversight/scraping/scraper.py | 27 +- stackoversight/scraping/site_balancer.py | 5 +- stackoversight/scraping/stack_overflow.py | 18 +- stackoversight/scraping/thread_executioner.py | 8 +- 8 files changed, 37 insertions(+), 1865 deletions(-) delete mode 100644 stackoversight/scraping/scraper.log diff --git a/stackoversight/scraping/abstractsite.py b/stackoversight/scraping/abstractsite.py index da9dc51..77380c9 100644 --- a/stackoversight/scraping/abstractsite.py +++ b/stackoversight/scraping/abstractsite.py @@ -1,19 +1,11 @@ -# For the proxy error and the cook_soup type specification -import requests -# For nap time if we're nice to the process and the site -from time import sleep -# For site request limit management +import logging +import threading import time -# To parse the HTML documents +from time import sleep + +import requests from bs4 import BeautifulSoup -# For balancing client requests to the site from stackoversight.scraping.site_balancer import SiteBalancer -# For thread lock -import threading -# For logging -import logging - -# TODO: fix issues caused by changing is_ready class AbstractSite(object): diff --git a/stackoversight/scraping/read_write_Lock.py b/stackoversight/scraping/read_write_Lock.py index 6123404..52134bd 100644 --- a/stackoversight/scraping/read_write_Lock.py +++ b/stackoversight/scraping/read_write_Lock.py @@ -1,9 +1,12 @@ -import unittest +import copy import threading import time -import copy +import unittest -__author__ = "Mateusz Kobos" +""" + Credit to original author: Mateusz Kobos + I just added ReaderLock and WriterLock for functionality with with statements +""" class RWLock: diff --git a/stackoversight/scraping/release_heap.py b/stackoversight/scraping/release_heap.py index f618291..ea86ac2 100644 --- a/stackoversight/scraping/release_heap.py +++ b/stackoversight/scraping/release_heap.py @@ -1,13 +1,9 @@ -# Need a heap ofc import heapq -# For release timers +import logging import threading -# For the release queue from queue import Queue -# For writer priority + from stackoversight.scraping.read_write_Lock import RWLock -# For logging -import logging class AbstractReleaseHeap(object): @@ -15,6 +11,7 @@ class AbstractReleaseHeap(object): elem_list must be a list of mutable tuples! the left value needs to be comparable and incrementable/decrementable """ + def __init__(self, elem_list: list, time_sec: int): # init the heap and queue and assign variables heapq.heapify(elem_list) diff --git a/stackoversight/scraping/scraper.log b/stackoversight/scraping/scraper.log deleted file mode 100644 index d552cdf..0000000 --- a/stackoversight/scraping/scraper.log +++ /dev/null @@ -1,1808 +0,0 @@ -INFO:root:Parent link https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow created. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 -DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 200 253 -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 -DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 200 254 -INFO:root:Parent link https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow created. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 -DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 200 254 -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 -DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 200 254 -INFO:root:Parent link https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow created. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 -DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 200 254 -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 -DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 200 254 -INFO:root:Starting StackExchange API Manager. -INFO:root:Starting StackOverflow Scraping Manager. -INFO:root:New killer, StackExchange API Manager's Thread Killer, spawned. -INFO:root:New worker, StackExchange API Manager's Worker #0, spawned. -INFO:root:New killer, StackOverflow Scraping Manager's Thread Killer, spawned. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 -DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 200 15743 -INFO:root:New worker, StackOverflow Scraping Manager's Worker #0, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #1, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #2, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #3, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #4, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #5, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #6, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #7, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #8, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #9, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #10, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #11, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #12, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #13, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #14, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #15, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #16, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #17, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #18, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #19, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #20, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #21, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #22, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #23, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #24, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #25, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #26, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #27, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #28, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #29, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #30, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #31, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #32, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #33, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #34, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #35, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #36, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #37, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #38, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #39, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #40, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #41, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #42, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #43, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #44, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #45, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #46, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #47, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #48, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #49, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #50, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #51, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #52, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #53, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #54, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #55, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #56, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #57, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #58, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #59, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #60, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #61, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #62, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #63, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #64, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #65, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #66, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #67, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #68, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #69, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #70, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #71, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #72, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #73, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #74, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #75, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #76, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #77, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #78, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #79, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #80, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #81, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #82, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #83, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #84, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #85, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #86, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #87, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #88, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #89, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #90, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #91, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #92, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #93, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #94, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #95, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #96, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #97, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #98, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #99, spawned. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 -DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 200 15743 -INFO:root:New worker, StackOverflow Scraping Manager's Worker #100, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #101, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #102, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #103, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #104, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #105, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #106, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #107, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #108, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #109, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #110, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #111, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #112, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #113, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #114, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #115, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #116, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #117, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #118, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #119, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #120, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #121, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #122, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #123, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #124, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #125, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #126, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #127, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #128, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #129, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #130, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #131, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #132, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #133, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #134, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #135, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #136, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #137, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #138, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #139, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #140, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #141, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #142, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #143, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #144, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #145, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #146, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #147, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #148, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #149, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #150, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #151, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #152, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #153, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #154, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #155, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #156, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #157, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #158, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #159, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #160, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #161, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #162, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #163, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #164, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #165, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #166, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #167, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #168, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #169, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #170, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #171, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #172, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #173, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #174, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #175, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #176, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #177, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #178, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #179, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #180, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #181, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #182, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #183, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #184, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #185, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #186, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #187, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #188, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #189, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #190, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #191, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #192, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #193, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #194, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #195, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #196, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #197, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #198, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #199, spawned. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/231767/what-does-the-yield-keyword-do&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 301 165 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/231767/what-does-the-yield-keyword-do HTTP/1.1" 200 107024 -INFO:root:Finished with link https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do, now marking StackOverflow Scraping Manager's Worker #0 for death. -INFO:root:StackOverflow Scraping Manager's Worker #0 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/394809/does-python-have-a-ternary-conditional-operator&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 301 182 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/394809/does-python-have-a-ternary-conditional-operator HTTP/1.1" 200 74545 -INFO:root:Finished with link https://stackoverflow.com/questions/394809/does-python-have-a-ternary-conditional-operator, now marking StackOverflow Scraping Manager's Worker #1 for death. -INFO:root:StackOverflow Scraping Manager's Worker #1 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/100003/what-are-metaclasses-in-python&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 301 165 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/100003/what-are-metaclasses-in-python HTTP/1.1" 200 78971 -INFO:root:Finished with link https://stackoverflow.com/questions/100003/what-are-metaclasses-in-python, now marking StackOverflow Scraping Manager's Worker #2 for death. -INFO:root:StackOverflow Scraping Manager's Worker #2 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/419163/what-does-if-name-main-do&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 301 160 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/419163/what-does-if-name-main-do HTTP/1.1" 200 81750 -INFO:root:Finished with link https://stackoverflow.com/questions/419163/what-does-if-name-main-do, now marking StackOverflow Scraping Manager's Worker #3 for death. -INFO:root:StackOverflow Scraping Manager's Worker #3 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 301 189 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions HTTP/1.1" 200 101755 -INFO:root:Finished with link https://stackoverflow.com/questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions, now marking StackOverflow Scraping Manager's Worker #4 for death. -INFO:root:StackOverflow Scraping Manager's Worker #4 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/89228/calling-an-external-command-in-python&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 301 171 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/89228/calling-an-external-command-in-python HTTP/1.1" 200 90584 -INFO:root:Finished with link https://stackoverflow.com/questions/89228/calling-an-external-command-in-python, now marking StackOverflow Scraping Manager's Worker #5 for death. -INFO:root:StackOverflow Scraping Manager's Worker #5 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/38987/how-to-merge-two-dictionaries-in-a-single-expression&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 301 186 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/38987/how-to-merge-two-dictionaries-in-a-single-expression HTTP/1.1" 200 85137 -INFO:root:Finished with link https://stackoverflow.com/questions/38987/how-to-merge-two-dictionaries-in-a-single-expression, now marking StackOverflow Scraping Manager's Worker #6 for death. -INFO:root:StackOverflow Scraping Manager's Worker #6 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/273192/how-can-i-safely-create-a-nested-directory&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 301 177 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/273192/how-can-i-safely-create-a-nested-directory HTTP/1.1" 200 85488 -INFO:root:Finished with link https://stackoverflow.com/questions/273192/how-can-i-safely-create-a-nested-directory, now marking StackOverflow Scraping Manager's Worker #7 for death. -INFO:root:StackOverflow Scraping Manager's Worker #7 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3437059/does-python-have-a-string-contains-substring-method&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 301 187 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3437059/does-python-have-a-string-contains-substring-method HTTP/1.1" 200 54194 -INFO:root:Finished with link https://stackoverflow.com/questions/3437059/does-python-have-a-string-contains-substring-method, now marking StackOverflow Scraping Manager's Worker #8 for death. -INFO:root:StackOverflow Scraping Manager's Worker #8 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3207219/how-do-i-list-all-files-of-a-directory&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 301 174 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3207219/how-do-i-list-all-files-of-a-directory HTTP/1.1" 200 86136 -INFO:root:Finished with link https://stackoverflow.com/questions/3207219/how-do-i-list-all-files-of-a-directory, now marking StackOverflow Scraping Manager's Worker #9 for death. -INFO:root:StackOverflow Scraping Manager's Worker #9 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/613183/how-do-i-sort-a-dictionary-by-value&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 301 170 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/613183/how-do-i-sort-a-dictionary-by-value HTTP/1.1" 200 89124 -INFO:root:Finished with link https://stackoverflow.com/questions/613183/how-do-i-sort-a-dictionary-by-value, now marking StackOverflow Scraping Manager's Worker #10 for death. -INFO:root:StackOverflow Scraping Manager's Worker #10 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/53513/how-do-i-check-if-a-list-is-empty&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 301 167 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/53513/how-do-i-check-if-a-list-is-empty HTTP/1.1" 200 90159 -INFO:root:Finished with link https://stackoverflow.com/questions/53513/how-do-i-check-if-a-list-is-empty, now marking StackOverflow Scraping Manager's Worker #11 for death. -INFO:root:StackOverflow Scraping Manager's Worker #11 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/136097/what-is-the-difference-between-staticmethod-and-classmethod&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 301 194 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/136097/what-is-the-difference-between-staticmethod-and-classmethod HTTP/1.1" 200 74265 -INFO:root:Finished with link https://stackoverflow.com/questions/136097/what-is-the-difference-between-staticmethod-and-classmethod, now marking StackOverflow Scraping Manager's Worker #12 for death. -INFO:root:StackOverflow Scraping Manager's Worker #12 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/522563/accessing-the-index-in-for-loops&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 301 167 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/522563/accessing-the-index-in-for-loops HTTP/1.1" 200 63885 -INFO:root:Finished with link https://stackoverflow.com/questions/522563/accessing-the-index-in-for-loops, now marking StackOverflow Scraping Manager's Worker #13 for death. -INFO:root:StackOverflow Scraping Manager's Worker #13 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 301 204 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend HTTP/1.1" 200 63010 -INFO:root:Finished with link https://stackoverflow.com/questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend, now marking StackOverflow Scraping Manager's Worker #14 for death. -INFO:root:StackOverflow Scraping Manager's Worker #14 is dead, no need to kill prematurely. -INFO:root:Parent link https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow created. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 -DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 200 255 -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 -DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 200 255 -INFO:root:Starting StackExchange API Manager. -INFO:root:Starting StackOverflow Scraping Manager. -INFO:root:New killer, StackExchange API Manager's Thread Killer, spawned. -INFO:root:New killer, StackOverflow Scraping Manager's Thread Killer, spawned. -INFO:root:New worker, StackExchange API Manager's Worker #0, spawned for task https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 -DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 200 15752 -INFO:root:New worker, StackOverflow Scraping Manager's Worker #0, spawned for task https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #1, spawned for task https://stackoverflow.com/questions/394809/does-python-have-a-ternary-conditional-operator. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #2, spawned for task https://stackoverflow.com/questions/100003/what-are-metaclasses-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #3, spawned for task https://stackoverflow.com/questions/419163/what-does-if-name-main-do. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #4, spawned for task https://stackoverflow.com/questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #5, spawned for task https://stackoverflow.com/questions/89228/calling-an-external-command-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #6, spawned for task https://stackoverflow.com/questions/38987/how-to-merge-two-dictionaries-in-a-single-expression. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #7, spawned for task https://stackoverflow.com/questions/273192/how-can-i-safely-create-a-nested-directory. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #8, spawned for task https://stackoverflow.com/questions/3437059/does-python-have-a-string-contains-substring-method. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #9, spawned for task https://stackoverflow.com/questions/3207219/how-do-i-list-all-files-of-a-directory. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #10, spawned for task https://stackoverflow.com/questions/613183/how-do-i-sort-a-dictionary-by-value. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #11, spawned for task https://stackoverflow.com/questions/53513/how-do-i-check-if-a-list-is-empty. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #12, spawned for task https://stackoverflow.com/questions/136097/what-is-the-difference-between-staticmethod-and-classmethod. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #13, spawned for task https://stackoverflow.com/questions/522563/accessing-the-index-in-for-loops. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #14, spawned for task https://stackoverflow.com/questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #15, spawned for task https://stackoverflow.com/questions/509211/understanding-slice-notation. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #16, spawned for task https://stackoverflow.com/questions/423379/using-global-variables-in-a-function. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #17, spawned for task https://stackoverflow.com/questions/3294889/iterating-over-dictionaries-using-for-loops. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #18, spawned for task https://stackoverflow.com/questions/176918/finding-the-index-of-an-item-given-a-list-containing-it-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #19, spawned for task https://stackoverflow.com/questions/952914/how-to-make-a-flat-list-out-of-list-of-lists. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #20, spawned for task https://stackoverflow.com/questions/1602934/check-if-a-given-key-already-exists-in-a-dictionary. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #21, spawned for task https://stackoverflow.com/questions/739654/how-to-make-a-chain-of-function-decorators. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #22, spawned for task https://stackoverflow.com/questions/510348/how-can-i-make-a-time-delay-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #23, spawned for task https://stackoverflow.com/questions/415511/how-to-get-the-current-time-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #24, spawned for task https://stackoverflow.com/questions/1436703/difference-between-str-and-repr. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #25, spawned for task https://stackoverflow.com/questions/4750806/how-do-i-install-pip-on-windows. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #26, spawned for task https://stackoverflow.com/questions/6470428/catch-multiple-exceptions-in-one-line-except-block. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #27, spawned for task https://stackoverflow.com/questions/986006/how-do-i-pass-a-variable-by-reference. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #28, spawned for task https://stackoverflow.com/questions/1132941/least-astonishment-and-the-mutable-default-argument. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #29, spawned for task https://stackoverflow.com/questions/1024847/add-new-keys-to-a-dictionary. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #30, spawned for task https://stackoverflow.com/questions/576169/understanding-python-super-with-init-methods. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #31, spawned for task https://stackoverflow.com/questions/2612802/how-to-clone-or-copy-a-list. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #32, spawned for task https://stackoverflow.com/questions/101754/is-there-a-way-to-run-python-on-android. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #33, spawned for task https://stackoverflow.com/questions/1720421/how-do-i-concatenate-two-lists-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #34, spawned for task https://stackoverflow.com/questions/379906/how-do-i-parse-a-string-to-a-float-or-int. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #35, spawned for task https://stackoverflow.com/questions/3277503/how-to-read-a-file-line-by-line-into-a-list. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #36, spawned for task https://stackoverflow.com/questions/36901/what-does-double-star-asterisk-and-star-asterisk-do-for-parameters. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #37, spawned for task https://stackoverflow.com/questions/123198/how-do-i-copy-a-file-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #38, spawned for task https://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #39, spawned for task https://stackoverflow.com/questions/2052390/manually-raising-throwing-an-exception-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #40, spawned for task https://stackoverflow.com/questions/466345/converting-string-into-datetime. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #41, spawned for task https://stackoverflow.com/questions/663171/how-to-substring-a-string-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #42, spawned for task https://stackoverflow.com/questions/448271/what-is-init-py-for. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #43, spawned for task https://stackoverflow.com/questions/5137497/find-current-directory-and-files-directory. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #44, spawned for task https://stackoverflow.com/questions/287871/how-to-print-colored-text-in-terminal-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #45, spawned for task https://stackoverflow.com/questions/6797984/how-do-i-lowercase-a-string-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #46, spawned for task https://stackoverflow.com/questions/1712227/how-do-i-get-the-number-of-elements-in-a-list. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #47, spawned for task https://stackoverflow.com/questions/6996603/delete-a-file-or-folder. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #48, spawned for task https://stackoverflow.com/questions/606191/convert-bytes-to-a-string. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #49, spawned for task https://stackoverflow.com/questions/68645/are-static-class-variables-possible-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #50, spawned for task https://stackoverflow.com/questions/930397/getting-the-last-element-of-a-list. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #51, spawned for task https://stackoverflow.com/questions/2720014/how-to-upgrade-all-python-packages-with-pip. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #52, spawned for task https://stackoverflow.com/questions/30081275/why-is-1000000000000000-in-range1000000000000001-so-fast-in-python-3. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #53, spawned for task https://stackoverflow.com/questions/60208/replacements-for-switch-statement-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #54, spawned for task https://stackoverflow.com/questions/4906977/how-to-access-environment-variable-values. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #55, spawned for task https://stackoverflow.com/questions/9371238/why-is-reading-lines-from-stdin-much-slower-in-c-than-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #56, spawned for task https://stackoverflow.com/questions/17271319/how-do-i-install-pip-on-macos-or-os-x. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #57, spawned for task https://stackoverflow.com/questions/493386/how-to-print-without-newline-or-space. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #58, spawned for task https://stackoverflow.com/questions/72899/how-do-i-sort-a-list-of-dictionaries-by-a-value-of-the-dictionary. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #59, spawned for task https://stackoverflow.com/questions/2225038/determine-the-type-of-an-object. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #60, spawned for task https://stackoverflow.com/questions/493819/python-join-why-is-it-string-joinlist-instead-of-list-joinstring. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #61, spawned for task https://stackoverflow.com/questions/735975/static-methods-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #62, spawned for task https://stackoverflow.com/questions/306400/how-to-randomly-select-an-item-from-a-list. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #63, spawned for task https://stackoverflow.com/questions/332289/how-do-you-change-the-size-of-figures-drawn-with-matplotlib. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #64, spawned for task https://stackoverflow.com/questions/275018/how-can-i-remove-a-trailing-newline. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #65, spawned for task https://stackoverflow.com/questions/12179271/meaning-of-classmethod-and-staticmethod-for-beginner. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #66, spawned for task https://stackoverflow.com/questions/3061/calling-a-function-of-a-module-by-using-its-name-a-string. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #67, spawned for task https://stackoverflow.com/questions/11346283/renaming-columns-in-pandas. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #68, spawned for task https://stackoverflow.com/questions/354038/how-do-i-check-if-a-string-is-a-number-float. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #69, spawned for task https://stackoverflow.com/questions/17071871/select-rows-from-a-dataframe-based-on-values-in-a-column-in-pandas. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #70, spawned for task https://stackoverflow.com/questions/101268/hidden-features-of-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #71, spawned for task https://stackoverflow.com/questions/455612/limiting-floats-to-two-decimal-points. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #72, spawned for task https://stackoverflow.com/questions/11277432/how-to-remove-a-key-from-a-python-dictionary. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #73, spawned for task https://stackoverflow.com/questions/610883/how-to-know-if-an-object-has-an-attribute-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #74, spawned for task https://stackoverflow.com/questions/4706499/how-do-you-append-to-a-file-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #75, spawned for task https://stackoverflow.com/questions/2835559/why-cant-python-parse-this-json-data. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #76, spawned for task https://stackoverflow.com/questions/2600191/how-can-i-count-the-occurrences-of-a-list-item. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #77, spawned for task https://stackoverflow.com/questions/990754/how-to-leave-exit-deactivate-a-python-virtualenv. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #78, spawned for task https://stackoverflow.com/questions/1450393/how-do-you-read-from-stdin. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #79, spawned for task https://stackoverflow.com/questions/3394835/use-of-args-and-kwargs. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #80, spawned for task https://stackoverflow.com/questions/402504/how-to-determine-a-python-variables-type. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #81, spawned for task https://stackoverflow.com/questions/16476924/how-to-iterate-over-rows-in-a-dataframe-in-pandas. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #82, spawned for task https://stackoverflow.com/questions/5082452/string-formatting-vs-format. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #83, spawned for task https://stackoverflow.com/questions/627435/how-to-remove-an-element-from-a-list-by-index. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #84, spawned for task https://stackoverflow.com/questions/931092/reverse-a-string-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #85, spawned for task https://stackoverflow.com/questions/961632/converting-integer-to-string. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #86, spawned for task https://stackoverflow.com/questions/510972/getting-the-class-name-of-an-instance. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #87, spawned for task https://stackoverflow.com/questions/5466451/how-can-i-print-literal-curly-brace-characters-in-python-string-and-also-use-fo. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #88, spawned for task https://stackoverflow.com/questions/339007/nicest-way-to-pad-zeroes-to-a-string. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #89, spawned for task https://stackoverflow.com/questions/2257441/random-string-generation-with-upper-case-letters-and-digits. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #90, spawned for task https://stackoverflow.com/questions/9573244/how-to-check-if-the-string-is-empty. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #91, spawned for task https://stackoverflow.com/questions/1747817/create-a-dictionary-with-list-comprehension. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #92, spawned for task https://stackoverflow.com/questions/9942594/unicodeencodeerror-ascii-codec-cant-encode-character-u-xa0-in-position-20. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #93, spawned for task https://stackoverflow.com/questions/5574702/how-to-print-to-stderr-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #94, spawned for task https://stackoverflow.com/questions/2846653/how-to-use-threading-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #95, spawned for task https://stackoverflow.com/questions/3996904/generate-random-integers-between-0-and-9. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #96, spawned for task https://stackoverflow.com/questions/5844672/delete-an-element-from-a-dictionary. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #97, spawned for task https://stackoverflow.com/questions/1301346/what-is-the-meaning-of-a-single-and-a-double-underscore-before-an-object-name. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #98, spawned for task https://stackoverflow.com/questions/36932/how-can-i-represent-an-enum-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #99, spawned for task https://stackoverflow.com/questions/582336/how-can-you-profile-a-python-script. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/231767/what-does-the-yield-keyword-do&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 165 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/231767/what-does-the-yield-keyword-do HTTP/1.1" 200 106828 -INFO:root:Finished with link https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do, now marking StackOverflow Scraping Manager's Worker #0 for death. -INFO:root:StackOverflow Scraping Manager's Worker #0 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 -DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 200 15752 -INFO:root:New worker, StackOverflow Scraping Manager's Worker #100, spawned for task https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #101, spawned for task https://stackoverflow.com/questions/394809/does-python-have-a-ternary-conditional-operator. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #102, spawned for task https://stackoverflow.com/questions/100003/what-are-metaclasses-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #103, spawned for task https://stackoverflow.com/questions/419163/what-does-if-name-main-do. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #104, spawned for task https://stackoverflow.com/questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #105, spawned for task https://stackoverflow.com/questions/89228/calling-an-external-command-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #106, spawned for task https://stackoverflow.com/questions/38987/how-to-merge-two-dictionaries-in-a-single-expression. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #107, spawned for task https://stackoverflow.com/questions/273192/how-can-i-safely-create-a-nested-directory. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #108, spawned for task https://stackoverflow.com/questions/3437059/does-python-have-a-string-contains-substring-method. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #109, spawned for task https://stackoverflow.com/questions/3207219/how-do-i-list-all-files-of-a-directory. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #110, spawned for task https://stackoverflow.com/questions/613183/how-do-i-sort-a-dictionary-by-value. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #111, spawned for task https://stackoverflow.com/questions/53513/how-do-i-check-if-a-list-is-empty. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #112, spawned for task https://stackoverflow.com/questions/136097/what-is-the-difference-between-staticmethod-and-classmethod. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #113, spawned for task https://stackoverflow.com/questions/522563/accessing-the-index-in-for-loops. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #114, spawned for task https://stackoverflow.com/questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #115, spawned for task https://stackoverflow.com/questions/509211/understanding-slice-notation. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #116, spawned for task https://stackoverflow.com/questions/423379/using-global-variables-in-a-function. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #117, spawned for task https://stackoverflow.com/questions/3294889/iterating-over-dictionaries-using-for-loops. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #118, spawned for task https://stackoverflow.com/questions/176918/finding-the-index-of-an-item-given-a-list-containing-it-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #119, spawned for task https://stackoverflow.com/questions/952914/how-to-make-a-flat-list-out-of-list-of-lists. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #120, spawned for task https://stackoverflow.com/questions/1602934/check-if-a-given-key-already-exists-in-a-dictionary. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #121, spawned for task https://stackoverflow.com/questions/739654/how-to-make-a-chain-of-function-decorators. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #122, spawned for task https://stackoverflow.com/questions/510348/how-can-i-make-a-time-delay-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #123, spawned for task https://stackoverflow.com/questions/415511/how-to-get-the-current-time-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #124, spawned for task https://stackoverflow.com/questions/1436703/difference-between-str-and-repr. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #125, spawned for task https://stackoverflow.com/questions/4750806/how-do-i-install-pip-on-windows. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #126, spawned for task https://stackoverflow.com/questions/6470428/catch-multiple-exceptions-in-one-line-except-block. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #127, spawned for task https://stackoverflow.com/questions/986006/how-do-i-pass-a-variable-by-reference. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #128, spawned for task https://stackoverflow.com/questions/1132941/least-astonishment-and-the-mutable-default-argument. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #129, spawned for task https://stackoverflow.com/questions/1024847/add-new-keys-to-a-dictionary. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #130, spawned for task https://stackoverflow.com/questions/576169/understanding-python-super-with-init-methods. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #131, spawned for task https://stackoverflow.com/questions/2612802/how-to-clone-or-copy-a-list. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #132, spawned for task https://stackoverflow.com/questions/101754/is-there-a-way-to-run-python-on-android. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #133, spawned for task https://stackoverflow.com/questions/1720421/how-do-i-concatenate-two-lists-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #134, spawned for task https://stackoverflow.com/questions/379906/how-do-i-parse-a-string-to-a-float-or-int. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #135, spawned for task https://stackoverflow.com/questions/3277503/how-to-read-a-file-line-by-line-into-a-list. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #136, spawned for task https://stackoverflow.com/questions/36901/what-does-double-star-asterisk-and-star-asterisk-do-for-parameters. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #137, spawned for task https://stackoverflow.com/questions/123198/how-do-i-copy-a-file-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #138, spawned for task https://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #139, spawned for task https://stackoverflow.com/questions/2052390/manually-raising-throwing-an-exception-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #140, spawned for task https://stackoverflow.com/questions/466345/converting-string-into-datetime. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #141, spawned for task https://stackoverflow.com/questions/663171/how-to-substring-a-string-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #142, spawned for task https://stackoverflow.com/questions/448271/what-is-init-py-for. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #143, spawned for task https://stackoverflow.com/questions/5137497/find-current-directory-and-files-directory. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #144, spawned for task https://stackoverflow.com/questions/287871/how-to-print-colored-text-in-terminal-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #145, spawned for task https://stackoverflow.com/questions/6797984/how-do-i-lowercase-a-string-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #146, spawned for task https://stackoverflow.com/questions/1712227/how-do-i-get-the-number-of-elements-in-a-list. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #147, spawned for task https://stackoverflow.com/questions/6996603/delete-a-file-or-folder. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #148, spawned for task https://stackoverflow.com/questions/606191/convert-bytes-to-a-string. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #149, spawned for task https://stackoverflow.com/questions/68645/are-static-class-variables-possible-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #150, spawned for task https://stackoverflow.com/questions/930397/getting-the-last-element-of-a-list. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #151, spawned for task https://stackoverflow.com/questions/2720014/how-to-upgrade-all-python-packages-with-pip. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #152, spawned for task https://stackoverflow.com/questions/30081275/why-is-1000000000000000-in-range1000000000000001-so-fast-in-python-3. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #153, spawned for task https://stackoverflow.com/questions/60208/replacements-for-switch-statement-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #154, spawned for task https://stackoverflow.com/questions/4906977/how-to-access-environment-variable-values. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #155, spawned for task https://stackoverflow.com/questions/9371238/why-is-reading-lines-from-stdin-much-slower-in-c-than-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #156, spawned for task https://stackoverflow.com/questions/17271319/how-do-i-install-pip-on-macos-or-os-x. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #157, spawned for task https://stackoverflow.com/questions/493386/how-to-print-without-newline-or-space. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #158, spawned for task https://stackoverflow.com/questions/72899/how-do-i-sort-a-list-of-dictionaries-by-a-value-of-the-dictionary. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #159, spawned for task https://stackoverflow.com/questions/2225038/determine-the-type-of-an-object. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #160, spawned for task https://stackoverflow.com/questions/493819/python-join-why-is-it-string-joinlist-instead-of-list-joinstring. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #161, spawned for task https://stackoverflow.com/questions/735975/static-methods-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #162, spawned for task https://stackoverflow.com/questions/306400/how-to-randomly-select-an-item-from-a-list. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #163, spawned for task https://stackoverflow.com/questions/332289/how-do-you-change-the-size-of-figures-drawn-with-matplotlib. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #164, spawned for task https://stackoverflow.com/questions/275018/how-can-i-remove-a-trailing-newline. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #165, spawned for task https://stackoverflow.com/questions/12179271/meaning-of-classmethod-and-staticmethod-for-beginner. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #166, spawned for task https://stackoverflow.com/questions/3061/calling-a-function-of-a-module-by-using-its-name-a-string. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #167, spawned for task https://stackoverflow.com/questions/11346283/renaming-columns-in-pandas. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #168, spawned for task https://stackoverflow.com/questions/354038/how-do-i-check-if-a-string-is-a-number-float. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #169, spawned for task https://stackoverflow.com/questions/17071871/select-rows-from-a-dataframe-based-on-values-in-a-column-in-pandas. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #170, spawned for task https://stackoverflow.com/questions/101268/hidden-features-of-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #171, spawned for task https://stackoverflow.com/questions/455612/limiting-floats-to-two-decimal-points. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #172, spawned for task https://stackoverflow.com/questions/11277432/how-to-remove-a-key-from-a-python-dictionary. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #173, spawned for task https://stackoverflow.com/questions/610883/how-to-know-if-an-object-has-an-attribute-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #174, spawned for task https://stackoverflow.com/questions/4706499/how-do-you-append-to-a-file-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #175, spawned for task https://stackoverflow.com/questions/2835559/why-cant-python-parse-this-json-data. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #176, spawned for task https://stackoverflow.com/questions/2600191/how-can-i-count-the-occurrences-of-a-list-item. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #177, spawned for task https://stackoverflow.com/questions/990754/how-to-leave-exit-deactivate-a-python-virtualenv. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #178, spawned for task https://stackoverflow.com/questions/1450393/how-do-you-read-from-stdin. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #179, spawned for task https://stackoverflow.com/questions/3394835/use-of-args-and-kwargs. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #180, spawned for task https://stackoverflow.com/questions/402504/how-to-determine-a-python-variables-type. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #181, spawned for task https://stackoverflow.com/questions/16476924/how-to-iterate-over-rows-in-a-dataframe-in-pandas. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #182, spawned for task https://stackoverflow.com/questions/5082452/string-formatting-vs-format. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #183, spawned for task https://stackoverflow.com/questions/627435/how-to-remove-an-element-from-a-list-by-index. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #184, spawned for task https://stackoverflow.com/questions/931092/reverse-a-string-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #185, spawned for task https://stackoverflow.com/questions/961632/converting-integer-to-string. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #186, spawned for task https://stackoverflow.com/questions/510972/getting-the-class-name-of-an-instance. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #187, spawned for task https://stackoverflow.com/questions/5466451/how-can-i-print-literal-curly-brace-characters-in-python-string-and-also-use-fo. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #188, spawned for task https://stackoverflow.com/questions/339007/nicest-way-to-pad-zeroes-to-a-string. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #189, spawned for task https://stackoverflow.com/questions/2257441/random-string-generation-with-upper-case-letters-and-digits. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #190, spawned for task https://stackoverflow.com/questions/9573244/how-to-check-if-the-string-is-empty. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #191, spawned for task https://stackoverflow.com/questions/1747817/create-a-dictionary-with-list-comprehension. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #192, spawned for task https://stackoverflow.com/questions/9942594/unicodeencodeerror-ascii-codec-cant-encode-character-u-xa0-in-position-20. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #193, spawned for task https://stackoverflow.com/questions/5574702/how-to-print-to-stderr-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #194, spawned for task https://stackoverflow.com/questions/2846653/how-to-use-threading-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #195, spawned for task https://stackoverflow.com/questions/3996904/generate-random-integers-between-0-and-9. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #196, spawned for task https://stackoverflow.com/questions/5844672/delete-an-element-from-a-dictionary. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #197, spawned for task https://stackoverflow.com/questions/1301346/what-is-the-meaning-of-a-single-and-a-double-underscore-before-an-object-name. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #198, spawned for task https://stackoverflow.com/questions/36932/how-can-i-represent-an-enum-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #199, spawned for task https://stackoverflow.com/questions/582336/how-can-you-profile-a-python-script. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/394809/does-python-have-a-ternary-conditional-operator&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 182 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/394809/does-python-have-a-ternary-conditional-operator HTTP/1.1" 200 74919 -INFO:root:Finished with link https://stackoverflow.com/questions/394809/does-python-have-a-ternary-conditional-operator, now marking StackOverflow Scraping Manager's Worker #1 for death. -INFO:root:StackOverflow Scraping Manager's Worker #1 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/100003/what-are-metaclasses-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 165 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/100003/what-are-metaclasses-in-python HTTP/1.1" 200 78821 -INFO:root:Finished with link https://stackoverflow.com/questions/100003/what-are-metaclasses-in-python, now marking StackOverflow Scraping Manager's Worker #2 for death. -INFO:root:StackOverflow Scraping Manager's Worker #2 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/419163/what-does-if-name-main-do&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 160 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/419163/what-does-if-name-main-do HTTP/1.1" 200 81778 -INFO:root:Finished with link https://stackoverflow.com/questions/419163/what-does-if-name-main-do, now marking StackOverflow Scraping Manager's Worker #3 for death. -INFO:root:StackOverflow Scraping Manager's Worker #3 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 189 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions HTTP/1.1" 200 101706 -INFO:root:Finished with link https://stackoverflow.com/questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions, now marking StackOverflow Scraping Manager's Worker #4 for death. -INFO:root:StackOverflow Scraping Manager's Worker #4 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/89228/calling-an-external-command-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 171 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/89228/calling-an-external-command-in-python HTTP/1.1" 200 90507 -INFO:root:Finished with link https://stackoverflow.com/questions/89228/calling-an-external-command-in-python, now marking StackOverflow Scraping Manager's Worker #5 for death. -INFO:root:StackOverflow Scraping Manager's Worker #5 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/38987/how-to-merge-two-dictionaries-in-a-single-expression&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 186 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/38987/how-to-merge-two-dictionaries-in-a-single-expression HTTP/1.1" 200 85275 -INFO:root:Finished with link https://stackoverflow.com/questions/38987/how-to-merge-two-dictionaries-in-a-single-expression, now marking StackOverflow Scraping Manager's Worker #6 for death. -INFO:root:StackOverflow Scraping Manager's Worker #6 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/273192/how-can-i-safely-create-a-nested-directory&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 177 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/273192/how-can-i-safely-create-a-nested-directory HTTP/1.1" 200 85451 -INFO:root:Finished with link https://stackoverflow.com/questions/273192/how-can-i-safely-create-a-nested-directory, now marking StackOverflow Scraping Manager's Worker #7 for death. -INFO:root:StackOverflow Scraping Manager's Worker #7 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3437059/does-python-have-a-string-contains-substring-method&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 187 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3437059/does-python-have-a-string-contains-substring-method HTTP/1.1" 200 54009 -INFO:root:Finished with link https://stackoverflow.com/questions/3437059/does-python-have-a-string-contains-substring-method, now marking StackOverflow Scraping Manager's Worker #8 for death. -INFO:root:StackOverflow Scraping Manager's Worker #8 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3207219/how-do-i-list-all-files-of-a-directory&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 174 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3207219/how-do-i-list-all-files-of-a-directory HTTP/1.1" 200 86246 -INFO:root:Finished with link https://stackoverflow.com/questions/3207219/how-do-i-list-all-files-of-a-directory, now marking StackOverflow Scraping Manager's Worker #9 for death. -INFO:root:StackOverflow Scraping Manager's Worker #9 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/613183/how-do-i-sort-a-dictionary-by-value&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 170 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/613183/how-do-i-sort-a-dictionary-by-value HTTP/1.1" 200 89153 -INFO:root:Finished with link https://stackoverflow.com/questions/613183/how-do-i-sort-a-dictionary-by-value, now marking StackOverflow Scraping Manager's Worker #10 for death. -INFO:root:StackOverflow Scraping Manager's Worker #10 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/53513/how-do-i-check-if-a-list-is-empty&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 167 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/53513/how-do-i-check-if-a-list-is-empty HTTP/1.1" 200 90370 -INFO:root:Finished with link https://stackoverflow.com/questions/53513/how-do-i-check-if-a-list-is-empty, now marking StackOverflow Scraping Manager's Worker #11 for death. -INFO:root:StackOverflow Scraping Manager's Worker #11 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/136097/what-is-the-difference-between-staticmethod-and-classmethod&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 194 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/136097/what-is-the-difference-between-staticmethod-and-classmethod HTTP/1.1" 200 74198 -INFO:root:Finished with link https://stackoverflow.com/questions/136097/what-is-the-difference-between-staticmethod-and-classmethod, now marking StackOverflow Scraping Manager's Worker #12 for death. -INFO:root:StackOverflow Scraping Manager's Worker #12 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/522563/accessing-the-index-in-for-loops&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 167 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/522563/accessing-the-index-in-for-loops HTTP/1.1" 200 64041 -INFO:root:Finished with link https://stackoverflow.com/questions/522563/accessing-the-index-in-for-loops, now marking StackOverflow Scraping Manager's Worker #13 for death. -INFO:root:StackOverflow Scraping Manager's Worker #13 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 204 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend HTTP/1.1" 200 63244 -INFO:root:Finished with link https://stackoverflow.com/questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend, now marking StackOverflow Scraping Manager's Worker #14 for death. -INFO:root:StackOverflow Scraping Manager's Worker #14 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/509211/understanding-slice-notation&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 163 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/509211/understanding-slice-notation HTTP/1.1" 200 91692 -INFO:root:Finished with link https://stackoverflow.com/questions/509211/understanding-slice-notation, now marking StackOverflow Scraping Manager's Worker #15 for death. -INFO:root:StackOverflow Scraping Manager's Worker #15 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/423379/using-global-variables-in-a-function&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 171 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/423379/using-global-variables-in-a-function HTTP/1.1" 200 64117 -INFO:root:Finished with link https://stackoverflow.com/questions/423379/using-global-variables-in-a-function, now marking StackOverflow Scraping Manager's Worker #16 for death. -INFO:root:StackOverflow Scraping Manager's Worker #16 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3294889/iterating-over-dictionaries-using-for-loops&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 179 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3294889/iterating-over-dictionaries-using-for-loops HTTP/1.1" 200 47726 -INFO:root:Finished with link https://stackoverflow.com/questions/3294889/iterating-over-dictionaries-using-for-loops, now marking StackOverflow Scraping Manager's Worker #17 for death. -INFO:root:StackOverflow Scraping Manager's Worker #17 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/176918/finding-the-index-of-an-item-given-a-list-containing-it-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 200 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/176918/finding-the-index-of-an-item-given-a-list-containing-it-in-python HTTP/1.1" 200 75598 -INFO:root:Finished with link https://stackoverflow.com/questions/176918/finding-the-index-of-an-item-given-a-list-containing-it-in-python, now marking StackOverflow Scraping Manager's Worker #18 for death. -INFO:root:StackOverflow Scraping Manager's Worker #18 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/952914/how-to-make-a-flat-list-out-of-list-of-lists&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 179 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/952914/how-to-make-a-flat-list-out-of-list-of-lists HTTP/1.1" 200 93122 -INFO:root:Finished with link https://stackoverflow.com/questions/952914/how-to-make-a-flat-list-out-of-list-of-lists, now marking StackOverflow Scraping Manager's Worker #19 for death. -INFO:root:StackOverflow Scraping Manager's Worker #19 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1602934/check-if-a-given-key-already-exists-in-a-dictionary&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 187 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1602934/check-if-a-given-key-already-exists-in-a-dictionary HTTP/1.1" 200 65775 -INFO:root:Finished with link https://stackoverflow.com/questions/1602934/check-if-a-given-key-already-exists-in-a-dictionary, now marking StackOverflow Scraping Manager's Worker #20 for death. -INFO:root:StackOverflow Scraping Manager's Worker #20 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/739654/how-to-make-a-chain-of-function-decorators&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 177 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/739654/how-to-make-a-chain-of-function-decorators HTTP/1.1" 200 78642 -INFO:root:Finished with link https://stackoverflow.com/questions/739654/how-to-make-a-chain-of-function-decorators, now marking StackOverflow Scraping Manager's Worker #21 for death. -INFO:root:StackOverflow Scraping Manager's Worker #21 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/510348/how-can-i-make-a-time-delay-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 172 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/510348/how-can-i-make-a-time-delay-in-python HTTP/1.1" 200 51042 -INFO:root:Finished with link https://stackoverflow.com/questions/510348/how-can-i-make-a-time-delay-in-python, now marking StackOverflow Scraping Manager's Worker #22 for death. -INFO:root:StackOverflow Scraping Manager's Worker #22 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/415511/how-to-get-the-current-time-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 172 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/415511/how-to-get-the-current-time-in-python HTTP/1.1" 200 74235 -INFO:root:Finished with link https://stackoverflow.com/questions/415511/how-to-get-the-current-time-in-python, now marking StackOverflow Scraping Manager's Worker #23 for death. -INFO:root:StackOverflow Scraping Manager's Worker #23 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1436703/difference-between-str-and-repr&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 167 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1436703/difference-between-str-and-repr HTTP/1.1" 200 71677 -INFO:root:Finished with link https://stackoverflow.com/questions/1436703/difference-between-str-and-repr, now marking StackOverflow Scraping Manager's Worker #24 for death. -INFO:root:StackOverflow Scraping Manager's Worker #24 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/4750806/how-do-i-install-pip-on-windows&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 167 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/4750806/how-do-i-install-pip-on-windows HTTP/1.1" 200 94631 -INFO:root:Finished with link https://stackoverflow.com/questions/4750806/how-do-i-install-pip-on-windows, now marking StackOverflow Scraping Manager's Worker #25 for death. -INFO:root:StackOverflow Scraping Manager's Worker #25 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/6470428/catch-multiple-exceptions-in-one-line-except-block&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 186 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/6470428/catch-multiple-exceptions-in-one-line-except-block HTTP/1.1" 200 39933 -INFO:root:Finished with link https://stackoverflow.com/questions/6470428/catch-multiple-exceptions-in-one-line-except-block, now marking StackOverflow Scraping Manager's Worker #26 for death. -INFO:root:StackOverflow Scraping Manager's Worker #26 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/986006/how-do-i-pass-a-variable-by-reference&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 172 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/986006/how-do-i-pass-a-variable-by-reference HTTP/1.1" 200 94773 -INFO:root:Finished with link https://stackoverflow.com/questions/986006/how-do-i-pass-a-variable-by-reference, now marking StackOverflow Scraping Manager's Worker #27 for death. -INFO:root:StackOverflow Scraping Manager's Worker #27 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1132941/least-astonishment-and-the-mutable-default-argument&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 187 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1132941/least-astonishment-and-the-mutable-default-argument HTTP/1.1" 200 119590 -INFO:root:Finished with link https://stackoverflow.com/questions/1132941/least-astonishment-and-the-mutable-default-argument, now marking StackOverflow Scraping Manager's Worker #28 for death. -INFO:root:StackOverflow Scraping Manager's Worker #28 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1024847/add-new-keys-to-a-dictionary&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 164 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1024847/add-new-keys-to-a-dictionary HTTP/1.1" 200 57082 -INFO:root:Finished with link https://stackoverflow.com/questions/1024847/add-new-keys-to-a-dictionary, now marking StackOverflow Scraping Manager's Worker #29 for death. -INFO:root:StackOverflow Scraping Manager's Worker #29 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/576169/understanding-python-super-with-init-methods&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 179 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/576169/understanding-python-super-with-init-methods HTTP/1.1" 200 52942 -INFO:root:Finished with link https://stackoverflow.com/questions/576169/understanding-python-super-with-init-methods, now marking StackOverflow Scraping Manager's Worker #30 for death. -INFO:root:StackOverflow Scraping Manager's Worker #30 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2612802/how-to-clone-or-copy-a-list&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 163 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2612802/how-to-clone-or-copy-a-list HTTP/1.1" 200 63497 -INFO:root:Finished with link https://stackoverflow.com/questions/2612802/how-to-clone-or-copy-a-list, now marking StackOverflow Scraping Manager's Worker #31 for death. -INFO:root:StackOverflow Scraping Manager's Worker #31 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/101754/is-there-a-way-to-run-python-on-android&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 174 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/101754/is-there-a-way-to-run-python-on-android HTTP/1.1" 200 78141 -INFO:root:Finished with link https://stackoverflow.com/questions/101754/is-there-a-way-to-run-python-on-android, now marking StackOverflow Scraping Manager's Worker #32 for death. -INFO:root:StackOverflow Scraping Manager's Worker #32 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1720421/how-do-i-concatenate-two-lists-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 176 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1720421/how-do-i-concatenate-two-lists-in-python HTTP/1.1" 200 77549 -INFO:root:Finished with link https://stackoverflow.com/questions/1720421/how-do-i-concatenate-two-lists-in-python, now marking StackOverflow Scraping Manager's Worker #33 for death. -INFO:root:StackOverflow Scraping Manager's Worker #33 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/379906/how-do-i-parse-a-string-to-a-float-or-int&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 176 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/379906/how-do-i-parse-a-string-to-a-float-or-int HTTP/1.1" 200 72532 -INFO:root:Finished with link https://stackoverflow.com/questions/379906/how-do-i-parse-a-string-to-a-float-or-int, now marking StackOverflow Scraping Manager's Worker #34 for death. -INFO:root:StackOverflow Scraping Manager's Worker #34 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3277503/how-to-read-a-file-line-by-line-into-a-list&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 179 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3277503/how-to-read-a-file-line-by-line-into-a-list HTTP/1.1" 200 84753 -INFO:root:Finished with link https://stackoverflow.com/questions/3277503/how-to-read-a-file-line-by-line-into-a-list, now marking StackOverflow Scraping Manager's Worker #35 for death. -INFO:root:StackOverflow Scraping Manager's Worker #35 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/36901/what-does-double-star-asterisk-and-star-asterisk-do-for-parameters&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 200 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/36901/what-does-double-star-asterisk-and-star-asterisk-do-for-parameters HTTP/1.1" 200 65976 -INFO:root:Finished with link https://stackoverflow.com/questions/36901/what-does-double-star-asterisk-and-star-asterisk-do-for-parameters, now marking StackOverflow Scraping Manager's Worker #36 for death. -INFO:root:StackOverflow Scraping Manager's Worker #36 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/123198/how-do-i-copy-a-file-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 165 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/123198/how-do-i-copy-a-file-in-python HTTP/1.1" 200 74692 -INFO:root:Finished with link https://stackoverflow.com/questions/123198/how-do-i-copy-a-file-in-python, now marking StackOverflow Scraping Manager's Worker #37 for death. -INFO:root:StackOverflow Scraping Manager's Worker #37 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 183 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks HTTP/1.1" 200 95710 -INFO:root:Finished with link https://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks, now marking StackOverflow Scraping Manager's Worker #38 for death. -INFO:root:StackOverflow Scraping Manager's Worker #38 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2052390/manually-raising-throwing-an-exception-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 184 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2052390/manually-raising-throwing-an-exception-in-python HTTP/1.1" 200 49177 -INFO:root:Finished with link https://stackoverflow.com/questions/2052390/manually-raising-throwing-an-exception-in-python, now marking StackOverflow Scraping Manager's Worker #39 for death. -INFO:root:StackOverflow Scraping Manager's Worker #39 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/466345/converting-string-into-datetime&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 166 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/466345/converting-string-into-datetime HTTP/1.1" 200 66195 -INFO:root:Finished with link https://stackoverflow.com/questions/466345/converting-string-into-datetime, now marking StackOverflow Scraping Manager's Worker #40 for death. -INFO:root:StackOverflow Scraping Manager's Worker #40 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/663171/how-to-substring-a-string-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 170 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/663171/how-to-substring-a-string-in-python HTTP/1.1" 200 50539 -INFO:root:Finished with link https://stackoverflow.com/questions/663171/how-to-substring-a-string-in-python, now marking StackOverflow Scraping Manager's Worker #41 for death. -INFO:root:StackOverflow Scraping Manager's Worker #41 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/448271/what-is-init-py-for&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 154 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/448271/what-is-init-py-for HTTP/1.1" 200 53242 -INFO:root:Finished with link https://stackoverflow.com/questions/448271/what-is-init-py-for, now marking StackOverflow Scraping Manager's Worker #42 for death. -INFO:root:StackOverflow Scraping Manager's Worker #42 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/5137497/find-current-directory-and-files-directory&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 178 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/5137497/find-current-directory-and-files-directory HTTP/1.1" 200 55206 -INFO:root:Finished with link https://stackoverflow.com/questions/5137497/find-current-directory-and-files-directory, now marking StackOverflow Scraping Manager's Worker #43 for death. -INFO:root:StackOverflow Scraping Manager's Worker #43 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/287871/how-to-print-colored-text-in-terminal-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 182 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/287871/how-to-print-colored-text-in-terminal-in-python HTTP/1.1" 200 93312 -INFO:root:Finished with link https://stackoverflow.com/questions/287871/how-to-print-colored-text-in-terminal-in-python, now marking StackOverflow Scraping Manager's Worker #44 for death. -INFO:root:StackOverflow Scraping Manager's Worker #44 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/6797984/how-do-i-lowercase-a-string-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 173 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/6797984/how-do-i-lowercase-a-string-in-python HTTP/1.1" 200 39713 -INFO:root:Finished with link https://stackoverflow.com/questions/6797984/how-do-i-lowercase-a-string-in-python, now marking StackOverflow Scraping Manager's Worker #45 for death. -INFO:root:StackOverflow Scraping Manager's Worker #45 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1712227/how-do-i-get-the-number-of-elements-in-a-list&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 181 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1712227/how-do-i-get-the-number-of-elements-in-a-list HTTP/1.1" 200 45703 -INFO:root:Finished with link https://stackoverflow.com/questions/1712227/how-do-i-get-the-number-of-elements-in-a-list, now marking StackOverflow Scraping Manager's Worker #46 for death. -INFO:root:StackOverflow Scraping Manager's Worker #46 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/6996603/delete-a-file-or-folder&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 159 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/6996603/delete-a-file-or-folder HTTP/1.1" 200 50406 -INFO:root:Finished with link https://stackoverflow.com/questions/6996603/delete-a-file-or-folder, now marking StackOverflow Scraping Manager's Worker #47 for death. -INFO:root:StackOverflow Scraping Manager's Worker #47 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/606191/convert-bytes-to-a-string&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 160 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/606191/convert-bytes-to-a-string HTTP/1.1" 200 66265 -INFO:root:Finished with link https://stackoverflow.com/questions/606191/convert-bytes-to-a-string, now marking StackOverflow Scraping Manager's Worker #48 for death. -INFO:root:StackOverflow Scraping Manager's Worker #48 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/68645/are-static-class-variables-possible-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 179 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/68645/are-static-class-variables-possible-in-python HTTP/1.1" 200 70585 -INFO:root:Finished with link https://stackoverflow.com/questions/68645/are-static-class-variables-possible-in-python, now marking StackOverflow Scraping Manager's Worker #49 for death. -INFO:root:StackOverflow Scraping Manager's Worker #49 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/930397/getting-the-last-element-of-a-list&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 169 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/930397/getting-the-last-element-of-a-list HTTP/1.1" 200 50071 -INFO:root:Finished with link https://stackoverflow.com/questions/930397/getting-the-last-element-of-a-list, now marking StackOverflow Scraping Manager's Worker #50 for death. -INFO:root:StackOverflow Scraping Manager's Worker #50 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2720014/how-to-upgrade-all-python-packages-with-pip&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 179 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2720014/how-to-upgrade-all-python-packages-with-pip HTTP/1.1" 200 97267 -INFO:root:Finished with link https://stackoverflow.com/questions/2720014/how-to-upgrade-all-python-packages-with-pip, now marking StackOverflow Scraping Manager's Worker #51 for death. -INFO:root:StackOverflow Scraping Manager's Worker #51 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/30081275/why-is-1000000000000000-in-range1000000000000001-so-fast-in-python-3&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 205 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/30081275/why-is-1000000000000000-in-range1000000000000001-so-fast-in-python-3 HTTP/1.1" 200 61366 -INFO:root:Finished with link https://stackoverflow.com/questions/30081275/why-is-1000000000000000-in-range1000000000000001-so-fast-in-python-3, now marking StackOverflow Scraping Manager's Worker #52 for death. -INFO:root:StackOverflow Scraping Manager's Worker #52 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/60208/replacements-for-switch-statement-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 177 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/60208/replacements-for-switch-statement-in-python HTTP/1.1" 200 103492 -INFO:root:Finished with link https://stackoverflow.com/questions/60208/replacements-for-switch-statement-in-python, now marking StackOverflow Scraping Manager's Worker #53 for death. -INFO:root:StackOverflow Scraping Manager's Worker #53 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/4906977/how-to-access-environment-variable-values&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 177 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/4906977/how-to-access-environment-variable-values HTTP/1.1" 200 44970 -INFO:root:Finished with link https://stackoverflow.com/questions/4906977/how-to-access-environment-variable-values, now marking StackOverflow Scraping Manager's Worker #54 for death. -INFO:root:StackOverflow Scraping Manager's Worker #54 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/9371238/why-is-reading-lines-from-stdin-much-slower-in-c-than-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 196 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/9371238/why-is-reading-lines-from-stdin-much-slower-in-c-than-python HTTP/1.1" 200 60825 -INFO:root:Finished with link https://stackoverflow.com/questions/9371238/why-is-reading-lines-from-stdin-much-slower-in-c-than-python, now marking StackOverflow Scraping Manager's Worker #55 for death. -INFO:root:StackOverflow Scraping Manager's Worker #55 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/17271319/how-do-i-install-pip-on-macos-or-os-x&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 174 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/17271319/how-do-i-install-pip-on-macos-or-os-x HTTP/1.1" 200 78444 -INFO:root:Finished with link https://stackoverflow.com/questions/17271319/how-do-i-install-pip-on-macos-or-os-x, now marking StackOverflow Scraping Manager's Worker #56 for death. -INFO:root:StackOverflow Scraping Manager's Worker #56 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/493386/how-to-print-without-newline-or-space&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 172 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/493386/how-to-print-without-newline-or-space HTTP/1.1" 200 68118 -INFO:root:Finished with link https://stackoverflow.com/questions/493386/how-to-print-without-newline-or-space, now marking StackOverflow Scraping Manager's Worker #57 for death. -INFO:root:StackOverflow Scraping Manager's Worker #57 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/72899/how-do-i-sort-a-list-of-dictionaries-by-a-value-of-the-dictionary&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 199 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/72899/how-do-i-sort-a-list-of-dictionaries-by-a-value-of-the-dictionary HTTP/1.1" 200 51698 -INFO:root:Finished with link https://stackoverflow.com/questions/72899/how-do-i-sort-a-list-of-dictionaries-by-a-value-of-the-dictionary, now marking StackOverflow Scraping Manager's Worker #58 for death. -INFO:root:StackOverflow Scraping Manager's Worker #58 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2225038/determine-the-type-of-an-object&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 167 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2225038/determine-the-type-of-an-object HTTP/1.1" 200 54915 -INFO:root:Finished with link https://stackoverflow.com/questions/2225038/determine-the-type-of-an-object, now marking StackOverflow Scraping Manager's Worker #59 for death. -INFO:root:StackOverflow Scraping Manager's Worker #59 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/493819/python-join-why-is-it-string-joinlist-instead-of-list-joinstring&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 199 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/493819/python-join-why-is-it-string-joinlist-instead-of-list-joinstring HTTP/1.1" 200 46293 -INFO:root:Finished with link https://stackoverflow.com/questions/493819/python-join-why-is-it-string-joinlist-instead-of-list-joinstring, now marking StackOverflow Scraping Manager's Worker #60 for death. -INFO:root:StackOverflow Scraping Manager's Worker #60 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/735975/static-methods-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 159 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/735975/static-methods-in-python HTTP/1.1" 200 51636 -INFO:root:Finished with link https://stackoverflow.com/questions/735975/static-methods-in-python, now marking StackOverflow Scraping Manager's Worker #61 for death. -INFO:root:StackOverflow Scraping Manager's Worker #61 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/306400/how-to-randomly-select-an-item-from-a-list&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 177 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/306400/how-to-randomly-select-an-item-from-a-list HTTP/1.1" 200 52106 -INFO:root:Finished with link https://stackoverflow.com/questions/306400/how-to-randomly-select-an-item-from-a-list, now marking StackOverflow Scraping Manager's Worker #62 for death. -INFO:root:StackOverflow Scraping Manager's Worker #62 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/332289/how-do-you-change-the-size-of-figures-drawn-with-matplotlib&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 194 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/332289/how-do-you-change-the-size-of-figures-drawn-with-matplotlib HTTP/1.1" 200 57796 -INFO:root:Finished with link https://stackoverflow.com/questions/332289/how-do-you-change-the-size-of-figures-drawn-with-matplotlib, now marking StackOverflow Scraping Manager's Worker #63 for death. -INFO:root:StackOverflow Scraping Manager's Worker #63 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/275018/how-can-i-remove-a-trailing-newline&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 170 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/275018/how-can-i-remove-a-trailing-newline HTTP/1.1" 200 77197 -INFO:root:Finished with link https://stackoverflow.com/questions/275018/how-can-i-remove-a-trailing-newline, now marking StackOverflow Scraping Manager's Worker #64 for death. -INFO:root:StackOverflow Scraping Manager's Worker #64 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/12179271/meaning-of-classmethod-and-staticmethod-for-beginner&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 189 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/12179271/meaning-of-classmethod-and-staticmethod-for-beginner HTTP/1.1" 200 53802 -INFO:root:Finished with link https://stackoverflow.com/questions/12179271/meaning-of-classmethod-and-staticmethod-for-beginner, now marking StackOverflow Scraping Manager's Worker #65 for death. -INFO:root:StackOverflow Scraping Manager's Worker #65 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3061/calling-a-function-of-a-module-by-using-its-name-a-string&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 190 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3061/calling-a-function-of-a-module-by-using-its-name-a-string HTTP/1.1" 200 52145 -INFO:root:Finished with link https://stackoverflow.com/questions/3061/calling-a-function-of-a-module-by-using-its-name-a-string, now marking StackOverflow Scraping Manager's Worker #66 for death. -INFO:root:StackOverflow Scraping Manager's Worker #66 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/11346283/renaming-columns-in-pandas&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 163 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/11346283/renaming-columns-in-pandas HTTP/1.1" 200 75721 -INFO:root:Finished with link https://stackoverflow.com/questions/11346283/renaming-columns-in-pandas, now marking StackOverflow Scraping Manager's Worker #67 for death. -INFO:root:StackOverflow Scraping Manager's Worker #67 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/354038/how-do-i-check-if-a-string-is-a-number-float&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 179 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/354038/how-do-i-check-if-a-string-is-a-number-float HTTP/1.1" 200 99196 -INFO:root:Finished with link https://stackoverflow.com/questions/354038/how-do-i-check-if-a-string-is-a-number-float, now marking StackOverflow Scraping Manager's Worker #68 for death. -INFO:root:StackOverflow Scraping Manager's Worker #68 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/17071871/select-rows-from-a-dataframe-based-on-values-in-a-column-in-pandas&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 203 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/17071871/select-rows-from-a-dataframe-based-on-values-in-a-column-in-pandas HTTP/1.1" 200 54939 -INFO:root:Finished with link https://stackoverflow.com/questions/17071871/select-rows-from-a-dataframe-based-on-values-in-a-column-in-pandas, now marking StackOverflow Scraping Manager's Worker #69 for death. -INFO:root:StackOverflow Scraping Manager's Worker #69 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/101268/hidden-features-of-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 160 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/101268/hidden-features-of-python HTTP/1.1" 200 115752 -INFO:root:Finished with link https://stackoverflow.com/questions/101268/hidden-features-of-python, now marking StackOverflow Scraping Manager's Worker #70 for death. -INFO:root:StackOverflow Scraping Manager's Worker #70 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/455612/limiting-floats-to-two-decimal-points&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 172 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/455612/limiting-floats-to-two-decimal-points HTTP/1.1" 200 81758 -INFO:root:Finished with link https://stackoverflow.com/questions/455612/limiting-floats-to-two-decimal-points, now marking StackOverflow Scraping Manager's Worker #71 for death. -INFO:root:StackOverflow Scraping Manager's Worker #71 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/11277432/how-to-remove-a-key-from-a-python-dictionary&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 181 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/11277432/how-to-remove-a-key-from-a-python-dictionary HTTP/1.1" 200 54355 -INFO:root:Finished with link https://stackoverflow.com/questions/11277432/how-to-remove-a-key-from-a-python-dictionary, now marking StackOverflow Scraping Manager's Worker #72 for death. -INFO:root:StackOverflow Scraping Manager's Worker #72 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/610883/how-to-know-if-an-object-has-an-attribute-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 186 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/610883/how-to-know-if-an-object-has-an-attribute-in-python HTTP/1.1" 200 55721 -INFO:root:Finished with link https://stackoverflow.com/questions/610883/how-to-know-if-an-object-has-an-attribute-in-python, now marking StackOverflow Scraping Manager's Worker #73 for death. -INFO:root:StackOverflow Scraping Manager's Worker #73 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/4706499/how-do-you-append-to-a-file-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 173 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/4706499/how-do-you-append-to-a-file-in-python HTTP/1.1" 200 46336 -INFO:root:Finished with link https://stackoverflow.com/questions/4706499/how-do-you-append-to-a-file-in-python, now marking StackOverflow Scraping Manager's Worker #74 for death. -INFO:root:StackOverflow Scraping Manager's Worker #74 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2835559/why-cant-python-parse-this-json-data&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 172 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2835559/why-cant-python-parse-this-json-data HTTP/1.1" 200 51758 -INFO:root:Finished with link https://stackoverflow.com/questions/2835559/why-cant-python-parse-this-json-data, now marking StackOverflow Scraping Manager's Worker #75 for death. -INFO:root:StackOverflow Scraping Manager's Worker #75 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2600191/how-can-i-count-the-occurrences-of-a-list-item&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 182 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2600191/how-can-i-count-the-occurrences-of-a-list-item HTTP/1.1" 200 65673 -INFO:root:Finished with link https://stackoverflow.com/questions/2600191/how-can-i-count-the-occurrences-of-a-list-item, now marking StackOverflow Scraping Manager's Worker #76 for death. -INFO:root:StackOverflow Scraping Manager's Worker #76 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/990754/how-to-leave-exit-deactivate-a-python-virtualenv&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 183 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/990754/how-to-leave-exit-deactivate-a-python-virtualenv HTTP/1.1" 200 50471 -INFO:root:Finished with link https://stackoverflow.com/questions/990754/how-to-leave-exit-deactivate-a-python-virtualenv, now marking StackOverflow Scraping Manager's Worker #77 for death. -INFO:root:StackOverflow Scraping Manager's Worker #77 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1450393/how-do-you-read-from-stdin&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 162 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1450393/how-do-you-read-from-stdin HTTP/1.1" 200 68543 -INFO:root:Finished with link https://stackoverflow.com/questions/1450393/how-do-you-read-from-stdin, now marking StackOverflow Scraping Manager's Worker #78 for death. -INFO:root:StackOverflow Scraping Manager's Worker #78 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3394835/use-of-args-and-kwargs&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 158 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3394835/use-of-args-and-kwargs HTTP/1.1" 200 52880 -INFO:root:Finished with link https://stackoverflow.com/questions/3394835/use-of-args-and-kwargs, now marking StackOverflow Scraping Manager's Worker #79 for death. -INFO:root:StackOverflow Scraping Manager's Worker #79 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/402504/how-to-determine-a-python-variables-type&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 175 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/402504/how-to-determine-a-python-variables-type HTTP/1.1" 200 56026 -INFO:root:Finished with link https://stackoverflow.com/questions/402504/how-to-determine-a-python-variables-type, now marking StackOverflow Scraping Manager's Worker #80 for death. -INFO:root:StackOverflow Scraping Manager's Worker #80 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/16476924/how-to-iterate-over-rows-in-a-dataframe-in-pandas&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 186 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/16476924/how-to-iterate-over-rows-in-a-dataframe-in-pandas HTTP/1.1" 200 72560 -INFO:root:Finished with link https://stackoverflow.com/questions/16476924/how-to-iterate-over-rows-in-a-dataframe-in-pandas, now marking StackOverflow Scraping Manager's Worker #81 for death. -INFO:root:StackOverflow Scraping Manager's Worker #81 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/5082452/string-formatting-vs-format&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 163 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/5082452/string-formatting-vs-format HTTP/1.1" 200 75728 -INFO:root:Finished with link https://stackoverflow.com/questions/5082452/string-formatting-vs-format, now marking StackOverflow Scraping Manager's Worker #82 for death. -INFO:root:StackOverflow Scraping Manager's Worker #82 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/627435/how-to-remove-an-element-from-a-list-by-index&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 180 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/627435/how-to-remove-an-element-from-a-list-by-index HTTP/1.1" 200 60795 -INFO:root:Finished with link https://stackoverflow.com/questions/627435/how-to-remove-an-element-from-a-list-by-index, now marking StackOverflow Scraping Manager's Worker #83 for death. -INFO:root:StackOverflow Scraping Manager's Worker #83 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/931092/reverse-a-string-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 161 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/931092/reverse-a-string-in-python HTTP/1.1" 200 65481 -INFO:root:Finished with link https://stackoverflow.com/questions/931092/reverse-a-string-in-python, now marking StackOverflow Scraping Manager's Worker #84 for death. -INFO:root:StackOverflow Scraping Manager's Worker #84 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/961632/converting-integer-to-string&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 163 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/961632/converting-integer-to-string HTTP/1.1" 200 40566 -INFO:root:Finished with link https://stackoverflow.com/questions/961632/converting-integer-to-string, now marking StackOverflow Scraping Manager's Worker #85 for death. -INFO:root:StackOverflow Scraping Manager's Worker #85 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/510972/getting-the-class-name-of-an-instance&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 172 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/510972/getting-the-class-name-of-an-instance HTTP/1.1" 200 47296 -INFO:root:Finished with link https://stackoverflow.com/questions/510972/getting-the-class-name-of-an-instance, now marking StackOverflow Scraping Manager's Worker #86 for death. -INFO:root:StackOverflow Scraping Manager's Worker #86 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/5466451/how-can-i-print-literal-curly-brace-characters-in-python-string-and-also-use-fo&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 200 50770 -INFO:root:Finished with link https://stackoverflow.com/questions/5466451/how-can-i-print-literal-curly-brace-characters-in-python-string-and-also-use-fo, now marking StackOverflow Scraping Manager's Worker #87 for death. -INFO:root:StackOverflow Scraping Manager's Worker #87 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/339007/nicest-way-to-pad-zeroes-to-a-string&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 171 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/339007/nicest-way-to-pad-zeroes-to-a-string HTTP/1.1" 200 51415 -INFO:root:Finished with link https://stackoverflow.com/questions/339007/nicest-way-to-pad-zeroes-to-a-string, now marking StackOverflow Scraping Manager's Worker #88 for death. -INFO:root:StackOverflow Scraping Manager's Worker #88 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2257441/random-string-generation-with-upper-case-letters-and-digits&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 195 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2257441/random-string-generation-with-upper-case-letters-and-digits HTTP/1.1" 200 84574 -INFO:root:Finished with link https://stackoverflow.com/questions/2257441/random-string-generation-with-upper-case-letters-and-digits, now marking StackOverflow Scraping Manager's Worker #89 for death. -INFO:root:StackOverflow Scraping Manager's Worker #89 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/9573244/how-to-check-if-the-string-is-empty&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 171 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/9573244/how-to-check-if-the-string-is-empty HTTP/1.1" 200 64190 -INFO:root:Finished with link https://stackoverflow.com/questions/9573244/how-to-check-if-the-string-is-empty, now marking StackOverflow Scraping Manager's Worker #90 for death. -INFO:root:StackOverflow Scraping Manager's Worker #90 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1747817/create-a-dictionary-with-list-comprehension&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 179 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1747817/create-a-dictionary-with-list-comprehension HTTP/1.1" 200 49921 -INFO:root:Finished with link https://stackoverflow.com/questions/1747817/create-a-dictionary-with-list-comprehension, now marking StackOverflow Scraping Manager's Worker #91 for death. -INFO:root:StackOverflow Scraping Manager's Worker #91 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/9942594/unicodeencodeerror-ascii-codec-cant-encode-character-u-xa0-in-position-20&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 209 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/9942594/unicodeencodeerror-ascii-codec-cant-encode-character-u-xa0-in-position-20 HTTP/1.1" 200 79027 -INFO:root:Finished with link https://stackoverflow.com/questions/9942594/unicodeencodeerror-ascii-codec-cant-encode-character-u-xa0-in-position-20, now marking StackOverflow Scraping Manager's Worker #92 for death. -INFO:root:StackOverflow Scraping Manager's Worker #92 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/5574702/how-to-print-to-stderr-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 168 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/5574702/how-to-print-to-stderr-in-python HTTP/1.1" 200 65211 -INFO:root:Finished with link https://stackoverflow.com/questions/5574702/how-to-print-to-stderr-in-python, now marking StackOverflow Scraping Manager's Worker #93 for death. -INFO:root:StackOverflow Scraping Manager's Worker #93 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2846653/how-to-use-threading-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 166 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2846653/how-to-use-threading-in-python HTTP/1.1" 200 83922 -INFO:root:Finished with link https://stackoverflow.com/questions/2846653/how-to-use-threading-in-python, now marking StackOverflow Scraping Manager's Worker #94 for death. -INFO:root:StackOverflow Scraping Manager's Worker #94 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3996904/generate-random-integers-between-0-and-9&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 176 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3996904/generate-random-integers-between-0-and-9 HTTP/1.1" 200 52390 -INFO:root:Finished with link https://stackoverflow.com/questions/3996904/generate-random-integers-between-0-and-9, now marking StackOverflow Scraping Manager's Worker #95 for death. -INFO:root:StackOverflow Scraping Manager's Worker #95 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/5844672/delete-an-element-from-a-dictionary&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 171 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/5844672/delete-an-element-from-a-dictionary HTTP/1.1" 200 62162 -INFO:root:Finished with link https://stackoverflow.com/questions/5844672/delete-an-element-from-a-dictionary, now marking StackOverflow Scraping Manager's Worker #96 for death. -INFO:root:StackOverflow Scraping Manager's Worker #96 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1301346/what-is-the-meaning-of-a-single-and-a-double-underscore-before-an-object-name&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 213 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1301346/what-is-the-meaning-of-a-single-and-a-double-underscore-before-an-object-name HTTP/1.1" 200 56691 -INFO:root:Finished with link https://stackoverflow.com/questions/1301346/what-is-the-meaning-of-a-single-and-a-double-underscore-before-an-object-name, now marking StackOverflow Scraping Manager's Worker #97 for death. -INFO:root:StackOverflow Scraping Manager's Worker #97 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/36932/how-can-i-represent-an-enum-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 171 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/36932/how-can-i-represent-an-enum-in-python HTTP/1.1" 200 83983 -INFO:root:Finished with link https://stackoverflow.com/questions/36932/how-can-i-represent-an-enum-in-python, now marking StackOverflow Scraping Manager's Worker #98 for death. -INFO:root:StackOverflow Scraping Manager's Worker #98 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/582336/how-can-you-profile-a-python-script&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 170 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/582336/how-can-you-profile-a-python-script HTTP/1.1" 200 77450 -INFO:root:Finished with link https://stackoverflow.com/questions/582336/how-can-you-profile-a-python-script, now marking StackOverflow Scraping Manager's Worker #99 for death. -INFO:root:StackOverflow Scraping Manager's Worker #99 is dead, no need to kill prematurely. -WARNING:root:StackExchange API Manager's Worker #0 received a link, https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 -DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 200 15745 -WARNING:root:Request count for key RGaU7lYPN8L5KbnIfkxmGQ(( is off by 49 -INFO:root:New worker, StackOverflow Scraping Manager's Worker #200, spawned for task https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #201, spawned for task https://stackoverflow.com/questions/394809/does-python-have-a-ternary-conditional-operator. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #202, spawned for task https://stackoverflow.com/questions/100003/what-are-metaclasses-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #203, spawned for task https://stackoverflow.com/questions/419163/what-does-if-name-main-do. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #204, spawned for task https://stackoverflow.com/questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #205, spawned for task https://stackoverflow.com/questions/89228/calling-an-external-command-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #206, spawned for task https://stackoverflow.com/questions/38987/how-to-merge-two-dictionaries-in-a-single-expression. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #207, spawned for task https://stackoverflow.com/questions/273192/how-can-i-safely-create-a-nested-directory. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #208, spawned for task https://stackoverflow.com/questions/3437059/does-python-have-a-string-contains-substring-method. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #209, spawned for task https://stackoverflow.com/questions/3207219/how-do-i-list-all-files-of-a-directory. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #210, spawned for task https://stackoverflow.com/questions/613183/how-do-i-sort-a-dictionary-by-value. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #211, spawned for task https://stackoverflow.com/questions/53513/how-do-i-check-if-a-list-is-empty. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #212, spawned for task https://stackoverflow.com/questions/136097/what-is-the-difference-between-staticmethod-and-classmethod. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #213, spawned for task https://stackoverflow.com/questions/522563/accessing-the-index-in-for-loops. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #214, spawned for task https://stackoverflow.com/questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #215, spawned for task https://stackoverflow.com/questions/509211/understanding-slice-notation. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #216, spawned for task https://stackoverflow.com/questions/423379/using-global-variables-in-a-function. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #217, spawned for task https://stackoverflow.com/questions/3294889/iterating-over-dictionaries-using-for-loops. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #218, spawned for task https://stackoverflow.com/questions/176918/finding-the-index-of-an-item-given-a-list-containing-it-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #219, spawned for task https://stackoverflow.com/questions/952914/how-to-make-a-flat-list-out-of-list-of-lists. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #220, spawned for task https://stackoverflow.com/questions/1602934/check-if-a-given-key-already-exists-in-a-dictionary. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #221, spawned for task https://stackoverflow.com/questions/739654/how-to-make-a-chain-of-function-decorators. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #222, spawned for task https://stackoverflow.com/questions/510348/how-can-i-make-a-time-delay-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #223, spawned for task https://stackoverflow.com/questions/415511/how-to-get-the-current-time-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #224, spawned for task https://stackoverflow.com/questions/1436703/difference-between-str-and-repr. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #225, spawned for task https://stackoverflow.com/questions/4750806/how-do-i-install-pip-on-windows. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #226, spawned for task https://stackoverflow.com/questions/6470428/catch-multiple-exceptions-in-one-line-except-block. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #227, spawned for task https://stackoverflow.com/questions/986006/how-do-i-pass-a-variable-by-reference. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #228, spawned for task https://stackoverflow.com/questions/1132941/least-astonishment-and-the-mutable-default-argument. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #229, spawned for task https://stackoverflow.com/questions/1024847/add-new-keys-to-a-dictionary. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #230, spawned for task https://stackoverflow.com/questions/576169/understanding-python-super-with-init-methods. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #231, spawned for task https://stackoverflow.com/questions/2612802/how-to-clone-or-copy-a-list. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #232, spawned for task https://stackoverflow.com/questions/101754/is-there-a-way-to-run-python-on-android. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #233, spawned for task https://stackoverflow.com/questions/1720421/how-do-i-concatenate-two-lists-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #234, spawned for task https://stackoverflow.com/questions/379906/how-do-i-parse-a-string-to-a-float-or-int. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #235, spawned for task https://stackoverflow.com/questions/3277503/how-to-read-a-file-line-by-line-into-a-list. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #236, spawned for task https://stackoverflow.com/questions/36901/what-does-double-star-asterisk-and-star-asterisk-do-for-parameters. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #237, spawned for task https://stackoverflow.com/questions/123198/how-do-i-copy-a-file-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #238, spawned for task https://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #239, spawned for task https://stackoverflow.com/questions/2052390/manually-raising-throwing-an-exception-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #240, spawned for task https://stackoverflow.com/questions/466345/converting-string-into-datetime. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #241, spawned for task https://stackoverflow.com/questions/663171/how-to-substring-a-string-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #242, spawned for task https://stackoverflow.com/questions/448271/what-is-init-py-for. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #243, spawned for task https://stackoverflow.com/questions/5137497/find-current-directory-and-files-directory. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #244, spawned for task https://stackoverflow.com/questions/287871/how-to-print-colored-text-in-terminal-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #245, spawned for task https://stackoverflow.com/questions/6797984/how-do-i-lowercase-a-string-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #246, spawned for task https://stackoverflow.com/questions/1712227/how-do-i-get-the-number-of-elements-in-a-list. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #247, spawned for task https://stackoverflow.com/questions/6996603/delete-a-file-or-folder. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #248, spawned for task https://stackoverflow.com/questions/606191/convert-bytes-to-a-string. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #249, spawned for task https://stackoverflow.com/questions/68645/are-static-class-variables-possible-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #250, spawned for task https://stackoverflow.com/questions/930397/getting-the-last-element-of-a-list. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #251, spawned for task https://stackoverflow.com/questions/2720014/how-to-upgrade-all-python-packages-with-pip. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #252, spawned for task https://stackoverflow.com/questions/30081275/why-is-1000000000000000-in-range1000000000000001-so-fast-in-python-3. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #253, spawned for task https://stackoverflow.com/questions/60208/replacements-for-switch-statement-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #254, spawned for task https://stackoverflow.com/questions/4906977/how-to-access-environment-variable-values. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #255, spawned for task https://stackoverflow.com/questions/9371238/why-is-reading-lines-from-stdin-much-slower-in-c-than-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #256, spawned for task https://stackoverflow.com/questions/17271319/how-do-i-install-pip-on-macos-or-os-x. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #257, spawned for task https://stackoverflow.com/questions/493386/how-to-print-without-newline-or-space. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #258, spawned for task https://stackoverflow.com/questions/72899/how-do-i-sort-a-list-of-dictionaries-by-a-value-of-the-dictionary. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #259, spawned for task https://stackoverflow.com/questions/2225038/determine-the-type-of-an-object. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #260, spawned for task https://stackoverflow.com/questions/493819/python-join-why-is-it-string-joinlist-instead-of-list-joinstring. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #261, spawned for task https://stackoverflow.com/questions/735975/static-methods-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #262, spawned for task https://stackoverflow.com/questions/306400/how-to-randomly-select-an-item-from-a-list. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #263, spawned for task https://stackoverflow.com/questions/332289/how-do-you-change-the-size-of-figures-drawn-with-matplotlib. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #264, spawned for task https://stackoverflow.com/questions/275018/how-can-i-remove-a-trailing-newline. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #265, spawned for task https://stackoverflow.com/questions/12179271/meaning-of-classmethod-and-staticmethod-for-beginner. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #266, spawned for task https://stackoverflow.com/questions/3061/calling-a-function-of-a-module-by-using-its-name-a-string. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #267, spawned for task https://stackoverflow.com/questions/11346283/renaming-columns-in-pandas. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #268, spawned for task https://stackoverflow.com/questions/354038/how-do-i-check-if-a-string-is-a-number-float. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #269, spawned for task https://stackoverflow.com/questions/17071871/select-rows-from-a-dataframe-based-on-values-in-a-column-in-pandas. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #270, spawned for task https://stackoverflow.com/questions/101268/hidden-features-of-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #271, spawned for task https://stackoverflow.com/questions/455612/limiting-floats-to-two-decimal-points. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #272, spawned for task https://stackoverflow.com/questions/11277432/how-to-remove-a-key-from-a-python-dictionary. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #273, spawned for task https://stackoverflow.com/questions/610883/how-to-know-if-an-object-has-an-attribute-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #274, spawned for task https://stackoverflow.com/questions/4706499/how-do-you-append-to-a-file-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #275, spawned for task https://stackoverflow.com/questions/2835559/why-cant-python-parse-this-json-data. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #276, spawned for task https://stackoverflow.com/questions/2600191/how-can-i-count-the-occurrences-of-a-list-item. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #277, spawned for task https://stackoverflow.com/questions/990754/how-to-leave-exit-deactivate-a-python-virtualenv. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #278, spawned for task https://stackoverflow.com/questions/1450393/how-do-you-read-from-stdin. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #279, spawned for task https://stackoverflow.com/questions/3394835/use-of-args-and-kwargs. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #280, spawned for task https://stackoverflow.com/questions/402504/how-to-determine-a-python-variables-type. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #281, spawned for task https://stackoverflow.com/questions/16476924/how-to-iterate-over-rows-in-a-dataframe-in-pandas. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #282, spawned for task https://stackoverflow.com/questions/5082452/string-formatting-vs-format. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #283, spawned for task https://stackoverflow.com/questions/627435/how-to-remove-an-element-from-a-list-by-index. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #284, spawned for task https://stackoverflow.com/questions/931092/reverse-a-string-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #285, spawned for task https://stackoverflow.com/questions/961632/converting-integer-to-string. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #286, spawned for task https://stackoverflow.com/questions/510972/getting-the-class-name-of-an-instance. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #287, spawned for task https://stackoverflow.com/questions/5466451/how-can-i-print-literal-curly-brace-characters-in-python-string-and-also-use-fo. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #288, spawned for task https://stackoverflow.com/questions/339007/nicest-way-to-pad-zeroes-to-a-string. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #289, spawned for task https://stackoverflow.com/questions/2257441/random-string-generation-with-upper-case-letters-and-digits. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #290, spawned for task https://stackoverflow.com/questions/9573244/how-to-check-if-the-string-is-empty. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #291, spawned for task https://stackoverflow.com/questions/1747817/create-a-dictionary-with-list-comprehension. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #292, spawned for task https://stackoverflow.com/questions/9942594/unicodeencodeerror-ascii-codec-cant-encode-character-u-xa0-in-position-20. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #293, spawned for task https://stackoverflow.com/questions/5574702/how-to-print-to-stderr-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #294, spawned for task https://stackoverflow.com/questions/2846653/how-to-use-threading-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #295, spawned for task https://stackoverflow.com/questions/3996904/generate-random-integers-between-0-and-9. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #296, spawned for task https://stackoverflow.com/questions/5844672/delete-an-element-from-a-dictionary. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #297, spawned for task https://stackoverflow.com/questions/1301346/what-is-the-meaning-of-a-single-and-a-double-underscore-before-an-object-name. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #298, spawned for task https://stackoverflow.com/questions/36932/how-can-i-represent-an-enum-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #299, spawned for task https://stackoverflow.com/questions/582336/how-can-you-profile-a-python-script. -WARNING:root:StackOverflow Scraping Manager's Worker #100 received a link, https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/231767/what-does-the-yield-keyword-do&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 165 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/231767/what-does-the-yield-keyword-do HTTP/1.1" 200 107088 -INFO:root:Finished with link https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do, now marking StackOverflow Scraping Manager's Worker #100 for death. -INFO:root:StackOverflow Scraping Manager's Worker #100 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #101 received a link, https://stackoverflow.com/questions/394809/does-python-have-a-ternary-conditional-operator&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/394809/does-python-have-a-ternary-conditional-operator&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 182 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/394809/does-python-have-a-ternary-conditional-operator HTTP/1.1" 200 74904 -INFO:root:Finished with link https://stackoverflow.com/questions/394809/does-python-have-a-ternary-conditional-operator, now marking StackOverflow Scraping Manager's Worker #101 for death. -INFO:root:StackOverflow Scraping Manager's Worker #101 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #102 received a link, https://stackoverflow.com/questions/100003/what-are-metaclasses-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/100003/what-are-metaclasses-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 165 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/100003/what-are-metaclasses-in-python HTTP/1.1" 200 78714 -INFO:root:Finished with link https://stackoverflow.com/questions/100003/what-are-metaclasses-in-python, now marking StackOverflow Scraping Manager's Worker #102 for death. -INFO:root:StackOverflow Scraping Manager's Worker #102 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #103 received a link, https://stackoverflow.com/questions/419163/what-does-if-name-main-do&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/419163/what-does-if-name-main-do&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 160 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/419163/what-does-if-name-main-do HTTP/1.1" 200 81773 -INFO:root:Finished with link https://stackoverflow.com/questions/419163/what-does-if-name-main-do, now marking StackOverflow Scraping Manager's Worker #103 for death. -INFO:root:StackOverflow Scraping Manager's Worker #103 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #104 received a link, https://stackoverflow.com/questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 189 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions HTTP/1.1" 200 101490 -INFO:root:Finished with link https://stackoverflow.com/questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions, now marking StackOverflow Scraping Manager's Worker #104 for death. -INFO:root:StackOverflow Scraping Manager's Worker #104 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #105 received a link, https://stackoverflow.com/questions/89228/calling-an-external-command-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/89228/calling-an-external-command-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 171 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/89228/calling-an-external-command-in-python HTTP/1.1" 200 90371 -INFO:root:Finished with link https://stackoverflow.com/questions/89228/calling-an-external-command-in-python, now marking StackOverflow Scraping Manager's Worker #105 for death. -INFO:root:StackOverflow Scraping Manager's Worker #105 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #106 received a link, https://stackoverflow.com/questions/38987/how-to-merge-two-dictionaries-in-a-single-expression&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/38987/how-to-merge-two-dictionaries-in-a-single-expression&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 186 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/38987/how-to-merge-two-dictionaries-in-a-single-expression HTTP/1.1" 200 85359 -INFO:root:Finished with link https://stackoverflow.com/questions/38987/how-to-merge-two-dictionaries-in-a-single-expression, now marking StackOverflow Scraping Manager's Worker #106 for death. -INFO:root:StackOverflow Scraping Manager's Worker #106 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #107 received a link, https://stackoverflow.com/questions/273192/how-can-i-safely-create-a-nested-directory&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/273192/how-can-i-safely-create-a-nested-directory&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 177 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/273192/how-can-i-safely-create-a-nested-directory HTTP/1.1" 200 85445 -INFO:root:Finished with link https://stackoverflow.com/questions/273192/how-can-i-safely-create-a-nested-directory, now marking StackOverflow Scraping Manager's Worker #107 for death. -INFO:root:StackOverflow Scraping Manager's Worker #107 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #108 received a link, https://stackoverflow.com/questions/3437059/does-python-have-a-string-contains-substring-method&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3437059/does-python-have-a-string-contains-substring-method&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 187 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3437059/does-python-have-a-string-contains-substring-method HTTP/1.1" 200 54322 -INFO:root:Finished with link https://stackoverflow.com/questions/3437059/does-python-have-a-string-contains-substring-method, now marking StackOverflow Scraping Manager's Worker #108 for death. -INFO:root:StackOverflow Scraping Manager's Worker #108 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #109 received a link, https://stackoverflow.com/questions/3207219/how-do-i-list-all-files-of-a-directory&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3207219/how-do-i-list-all-files-of-a-directory&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 174 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3207219/how-do-i-list-all-files-of-a-directory HTTP/1.1" 200 86334 -INFO:root:Finished with link https://stackoverflow.com/questions/3207219/how-do-i-list-all-files-of-a-directory, now marking StackOverflow Scraping Manager's Worker #109 for death. -INFO:root:StackOverflow Scraping Manager's Worker #109 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #110 received a link, https://stackoverflow.com/questions/613183/how-do-i-sort-a-dictionary-by-value&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/613183/how-do-i-sort-a-dictionary-by-value&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 170 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/613183/how-do-i-sort-a-dictionary-by-value HTTP/1.1" 200 89382 -INFO:root:Finished with link https://stackoverflow.com/questions/613183/how-do-i-sort-a-dictionary-by-value, now marking StackOverflow Scraping Manager's Worker #110 for death. -INFO:root:StackOverflow Scraping Manager's Worker #110 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #111 received a link, https://stackoverflow.com/questions/53513/how-do-i-check-if-a-list-is-empty&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/53513/how-do-i-check-if-a-list-is-empty&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 167 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/53513/how-do-i-check-if-a-list-is-empty HTTP/1.1" 200 90200 -INFO:root:Finished with link https://stackoverflow.com/questions/53513/how-do-i-check-if-a-list-is-empty, now marking StackOverflow Scraping Manager's Worker #111 for death. -INFO:root:StackOverflow Scraping Manager's Worker #111 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #112 received a link, https://stackoverflow.com/questions/136097/what-is-the-difference-between-staticmethod-and-classmethod&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/136097/what-is-the-difference-between-staticmethod-and-classmethod&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 194 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/136097/what-is-the-difference-between-staticmethod-and-classmethod HTTP/1.1" 200 74154 -INFO:root:Finished with link https://stackoverflow.com/questions/136097/what-is-the-difference-between-staticmethod-and-classmethod, now marking StackOverflow Scraping Manager's Worker #112 for death. -INFO:root:StackOverflow Scraping Manager's Worker #112 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #113 received a link, https://stackoverflow.com/questions/522563/accessing-the-index-in-for-loops&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/522563/accessing-the-index-in-for-loops&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 167 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/522563/accessing-the-index-in-for-loops HTTP/1.1" 200 63909 -INFO:root:Finished with link https://stackoverflow.com/questions/522563/accessing-the-index-in-for-loops, now marking StackOverflow Scraping Manager's Worker #113 for death. -INFO:root:StackOverflow Scraping Manager's Worker #113 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #114 received a link, https://stackoverflow.com/questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 204 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend HTTP/1.1" 200 63185 -INFO:root:Finished with link https://stackoverflow.com/questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend, now marking StackOverflow Scraping Manager's Worker #114 for death. -INFO:root:StackOverflow Scraping Manager's Worker #114 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #115 received a link, https://stackoverflow.com/questions/509211/understanding-slice-notation&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/509211/understanding-slice-notation&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 163 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/509211/understanding-slice-notation HTTP/1.1" 200 91302 -INFO:root:Finished with link https://stackoverflow.com/questions/509211/understanding-slice-notation, now marking StackOverflow Scraping Manager's Worker #115 for death. -INFO:root:StackOverflow Scraping Manager's Worker #115 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #116 received a link, https://stackoverflow.com/questions/423379/using-global-variables-in-a-function&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/423379/using-global-variables-in-a-function&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 171 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/423379/using-global-variables-in-a-function HTTP/1.1" 200 64058 -INFO:root:Finished with link https://stackoverflow.com/questions/423379/using-global-variables-in-a-function, now marking StackOverflow Scraping Manager's Worker #116 for death. -INFO:root:StackOverflow Scraping Manager's Worker #116 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #117 received a link, https://stackoverflow.com/questions/3294889/iterating-over-dictionaries-using-for-loops&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3294889/iterating-over-dictionaries-using-for-loops&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 179 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3294889/iterating-over-dictionaries-using-for-loops HTTP/1.1" 200 47904 -INFO:root:Finished with link https://stackoverflow.com/questions/3294889/iterating-over-dictionaries-using-for-loops, now marking StackOverflow Scraping Manager's Worker #117 for death. -INFO:root:StackOverflow Scraping Manager's Worker #117 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #118 received a link, https://stackoverflow.com/questions/176918/finding-the-index-of-an-item-given-a-list-containing-it-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/176918/finding-the-index-of-an-item-given-a-list-containing-it-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 200 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/176918/finding-the-index-of-an-item-given-a-list-containing-it-in-python HTTP/1.1" 200 75567 -INFO:root:Finished with link https://stackoverflow.com/questions/176918/finding-the-index-of-an-item-given-a-list-containing-it-in-python, now marking StackOverflow Scraping Manager's Worker #118 for death. -INFO:root:StackOverflow Scraping Manager's Worker #118 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #119 received a link, https://stackoverflow.com/questions/952914/how-to-make-a-flat-list-out-of-list-of-lists&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/952914/how-to-make-a-flat-list-out-of-list-of-lists&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 179 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/952914/how-to-make-a-flat-list-out-of-list-of-lists HTTP/1.1" 200 93157 -INFO:root:Finished with link https://stackoverflow.com/questions/952914/how-to-make-a-flat-list-out-of-list-of-lists, now marking StackOverflow Scraping Manager's Worker #119 for death. -INFO:root:StackOverflow Scraping Manager's Worker #119 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #120 received a link, https://stackoverflow.com/questions/1602934/check-if-a-given-key-already-exists-in-a-dictionary&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1602934/check-if-a-given-key-already-exists-in-a-dictionary&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 187 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1602934/check-if-a-given-key-already-exists-in-a-dictionary HTTP/1.1" 200 65632 -INFO:root:Finished with link https://stackoverflow.com/questions/1602934/check-if-a-given-key-already-exists-in-a-dictionary, now marking StackOverflow Scraping Manager's Worker #120 for death. -INFO:root:StackOverflow Scraping Manager's Worker #120 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #121 received a link, https://stackoverflow.com/questions/739654/how-to-make-a-chain-of-function-decorators&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/739654/how-to-make-a-chain-of-function-decorators&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 177 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/739654/how-to-make-a-chain-of-function-decorators HTTP/1.1" 200 78947 -INFO:root:Finished with link https://stackoverflow.com/questions/739654/how-to-make-a-chain-of-function-decorators, now marking StackOverflow Scraping Manager's Worker #121 for death. -INFO:root:StackOverflow Scraping Manager's Worker #121 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #122 received a link, https://stackoverflow.com/questions/510348/how-can-i-make-a-time-delay-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/510348/how-can-i-make-a-time-delay-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 172 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/510348/how-can-i-make-a-time-delay-in-python HTTP/1.1" 200 50889 -INFO:root:Finished with link https://stackoverflow.com/questions/510348/how-can-i-make-a-time-delay-in-python, now marking StackOverflow Scraping Manager's Worker #122 for death. -INFO:root:StackOverflow Scraping Manager's Worker #122 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #123 received a link, https://stackoverflow.com/questions/415511/how-to-get-the-current-time-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/415511/how-to-get-the-current-time-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 172 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/415511/how-to-get-the-current-time-in-python HTTP/1.1" 200 74327 -INFO:root:Finished with link https://stackoverflow.com/questions/415511/how-to-get-the-current-time-in-python, now marking StackOverflow Scraping Manager's Worker #123 for death. -INFO:root:StackOverflow Scraping Manager's Worker #123 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #124 received a link, https://stackoverflow.com/questions/1436703/difference-between-str-and-repr&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1436703/difference-between-str-and-repr&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 167 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1436703/difference-between-str-and-repr HTTP/1.1" 200 71377 -INFO:root:Finished with link https://stackoverflow.com/questions/1436703/difference-between-str-and-repr, now marking StackOverflow Scraping Manager's Worker #124 for death. -INFO:root:StackOverflow Scraping Manager's Worker #124 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #125 received a link, https://stackoverflow.com/questions/4750806/how-do-i-install-pip-on-windows&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/4750806/how-do-i-install-pip-on-windows&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 167 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/4750806/how-do-i-install-pip-on-windows HTTP/1.1" 200 94340 -INFO:root:Finished with link https://stackoverflow.com/questions/4750806/how-do-i-install-pip-on-windows, now marking StackOverflow Scraping Manager's Worker #125 for death. -INFO:root:StackOverflow Scraping Manager's Worker #125 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #126 received a link, https://stackoverflow.com/questions/6470428/catch-multiple-exceptions-in-one-line-except-block&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/6470428/catch-multiple-exceptions-in-one-line-except-block&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 186 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/6470428/catch-multiple-exceptions-in-one-line-except-block HTTP/1.1" 200 39882 -INFO:root:Finished with link https://stackoverflow.com/questions/6470428/catch-multiple-exceptions-in-one-line-except-block, now marking StackOverflow Scraping Manager's Worker #126 for death. -INFO:root:StackOverflow Scraping Manager's Worker #126 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #127 received a link, https://stackoverflow.com/questions/986006/how-do-i-pass-a-variable-by-reference&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/986006/how-do-i-pass-a-variable-by-reference&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 172 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/986006/how-do-i-pass-a-variable-by-reference HTTP/1.1" 200 94681 -INFO:root:Finished with link https://stackoverflow.com/questions/986006/how-do-i-pass-a-variable-by-reference, now marking StackOverflow Scraping Manager's Worker #127 for death. -INFO:root:StackOverflow Scraping Manager's Worker #127 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #128 received a link, https://stackoverflow.com/questions/1132941/least-astonishment-and-the-mutable-default-argument&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1132941/least-astonishment-and-the-mutable-default-argument&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 187 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1132941/least-astonishment-and-the-mutable-default-argument HTTP/1.1" 200 119301 -INFO:root:Finished with link https://stackoverflow.com/questions/1132941/least-astonishment-and-the-mutable-default-argument, now marking StackOverflow Scraping Manager's Worker #128 for death. -INFO:root:StackOverflow Scraping Manager's Worker #128 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #129 received a link, https://stackoverflow.com/questions/1024847/add-new-keys-to-a-dictionary&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1024847/add-new-keys-to-a-dictionary&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 164 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1024847/add-new-keys-to-a-dictionary HTTP/1.1" 200 57038 -INFO:root:Finished with link https://stackoverflow.com/questions/1024847/add-new-keys-to-a-dictionary, now marking StackOverflow Scraping Manager's Worker #129 for death. -INFO:root:StackOverflow Scraping Manager's Worker #129 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #130 received a link, https://stackoverflow.com/questions/576169/understanding-python-super-with-init-methods&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/576169/understanding-python-super-with-init-methods&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 179 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/576169/understanding-python-super-with-init-methods HTTP/1.1" 200 52993 -INFO:root:Finished with link https://stackoverflow.com/questions/576169/understanding-python-super-with-init-methods, now marking StackOverflow Scraping Manager's Worker #130 for death. -INFO:root:StackOverflow Scraping Manager's Worker #130 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #131 received a link, https://stackoverflow.com/questions/2612802/how-to-clone-or-copy-a-list&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2612802/how-to-clone-or-copy-a-list&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 163 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2612802/how-to-clone-or-copy-a-list HTTP/1.1" 200 63834 -INFO:root:Finished with link https://stackoverflow.com/questions/2612802/how-to-clone-or-copy-a-list, now marking StackOverflow Scraping Manager's Worker #131 for death. -INFO:root:StackOverflow Scraping Manager's Worker #131 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #132 received a link, https://stackoverflow.com/questions/101754/is-there-a-way-to-run-python-on-android&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/101754/is-there-a-way-to-run-python-on-android&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 174 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/101754/is-there-a-way-to-run-python-on-android HTTP/1.1" 200 78497 -INFO:root:Finished with link https://stackoverflow.com/questions/101754/is-there-a-way-to-run-python-on-android, now marking StackOverflow Scraping Manager's Worker #132 for death. -INFO:root:StackOverflow Scraping Manager's Worker #132 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #133 received a link, https://stackoverflow.com/questions/1720421/how-do-i-concatenate-two-lists-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1720421/how-do-i-concatenate-two-lists-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 176 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1720421/how-do-i-concatenate-two-lists-in-python HTTP/1.1" 200 77773 -INFO:root:Finished with link https://stackoverflow.com/questions/1720421/how-do-i-concatenate-two-lists-in-python, now marking StackOverflow Scraping Manager's Worker #133 for death. -INFO:root:StackOverflow Scraping Manager's Worker #133 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #134 received a link, https://stackoverflow.com/questions/379906/how-do-i-parse-a-string-to-a-float-or-int&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/379906/how-do-i-parse-a-string-to-a-float-or-int&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 176 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/379906/how-do-i-parse-a-string-to-a-float-or-int HTTP/1.1" 200 72628 -INFO:root:Finished with link https://stackoverflow.com/questions/379906/how-do-i-parse-a-string-to-a-float-or-int, now marking StackOverflow Scraping Manager's Worker #134 for death. -INFO:root:StackOverflow Scraping Manager's Worker #134 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #135 received a link, https://stackoverflow.com/questions/3277503/how-to-read-a-file-line-by-line-into-a-list&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3277503/how-to-read-a-file-line-by-line-into-a-list&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 179 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/3277503/how-to-read-a-file-line-by-line-into-a-list HTTP/1.1" 200 84330 -INFO:root:Finished with link https://stackoverflow.com/questions/3277503/how-to-read-a-file-line-by-line-into-a-list, now marking StackOverflow Scraping Manager's Worker #135 for death. -INFO:root:StackOverflow Scraping Manager's Worker #135 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #136 received a link, https://stackoverflow.com/questions/36901/what-does-double-star-asterisk-and-star-asterisk-do-for-parameters&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/36901/what-does-double-star-asterisk-and-star-asterisk-do-for-parameters&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 200 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/36901/what-does-double-star-asterisk-and-star-asterisk-do-for-parameters HTTP/1.1" 200 65827 -INFO:root:Finished with link https://stackoverflow.com/questions/36901/what-does-double-star-asterisk-and-star-asterisk-do-for-parameters, now marking StackOverflow Scraping Manager's Worker #136 for death. -INFO:root:StackOverflow Scraping Manager's Worker #136 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #137 received a link, https://stackoverflow.com/questions/123198/how-do-i-copy-a-file-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/123198/how-do-i-copy-a-file-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 165 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/123198/how-do-i-copy-a-file-in-python HTTP/1.1" 200 74350 -INFO:root:Finished with link https://stackoverflow.com/questions/123198/how-do-i-copy-a-file-in-python, now marking StackOverflow Scraping Manager's Worker #137 for death. -INFO:root:StackOverflow Scraping Manager's Worker #137 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #138 received a link, https://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 183 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks HTTP/1.1" 200 95623 -INFO:root:Finished with link https://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks, now marking StackOverflow Scraping Manager's Worker #138 for death. -INFO:root:StackOverflow Scraping Manager's Worker #138 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #139 received a link, https://stackoverflow.com/questions/2052390/manually-raising-throwing-an-exception-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2052390/manually-raising-throwing-an-exception-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 184 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2052390/manually-raising-throwing-an-exception-in-python HTTP/1.1" 200 49042 -INFO:root:Finished with link https://stackoverflow.com/questions/2052390/manually-raising-throwing-an-exception-in-python, now marking StackOverflow Scraping Manager's Worker #139 for death. -INFO:root:StackOverflow Scraping Manager's Worker #139 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #140 received a link, https://stackoverflow.com/questions/466345/converting-string-into-datetime&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/466345/converting-string-into-datetime&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 166 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/466345/converting-string-into-datetime HTTP/1.1" 200 66251 -INFO:root:Finished with link https://stackoverflow.com/questions/466345/converting-string-into-datetime, now marking StackOverflow Scraping Manager's Worker #140 for death. -INFO:root:StackOverflow Scraping Manager's Worker #140 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #141 received a link, https://stackoverflow.com/questions/663171/how-to-substring-a-string-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/663171/how-to-substring-a-string-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 170 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/663171/how-to-substring-a-string-in-python HTTP/1.1" 200 50855 -INFO:root:Finished with link https://stackoverflow.com/questions/663171/how-to-substring-a-string-in-python, now marking StackOverflow Scraping Manager's Worker #141 for death. -INFO:root:StackOverflow Scraping Manager's Worker #141 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #142 received a link, https://stackoverflow.com/questions/448271/what-is-init-py-for&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/448271/what-is-init-py-for&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 154 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/448271/what-is-init-py-for HTTP/1.1" 200 53293 -INFO:root:Finished with link https://stackoverflow.com/questions/448271/what-is-init-py-for, now marking StackOverflow Scraping Manager's Worker #142 for death. -INFO:root:StackOverflow Scraping Manager's Worker #142 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #143 received a link, https://stackoverflow.com/questions/5137497/find-current-directory-and-files-directory&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/5137497/find-current-directory-and-files-directory&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 178 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/5137497/find-current-directory-and-files-directory HTTP/1.1" 200 55292 -INFO:root:Finished with link https://stackoverflow.com/questions/5137497/find-current-directory-and-files-directory, now marking StackOverflow Scraping Manager's Worker #143 for death. -INFO:root:StackOverflow Scraping Manager's Worker #143 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #144 received a link, https://stackoverflow.com/questions/287871/how-to-print-colored-text-in-terminal-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/287871/how-to-print-colored-text-in-terminal-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 182 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/287871/how-to-print-colored-text-in-terminal-in-python HTTP/1.1" 200 93416 -INFO:root:Finished with link https://stackoverflow.com/questions/287871/how-to-print-colored-text-in-terminal-in-python, now marking StackOverflow Scraping Manager's Worker #144 for death. -INFO:root:StackOverflow Scraping Manager's Worker #144 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #145 received a link, https://stackoverflow.com/questions/6797984/how-do-i-lowercase-a-string-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/6797984/how-do-i-lowercase-a-string-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 173 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/6797984/how-do-i-lowercase-a-string-in-python HTTP/1.1" 200 39999 -INFO:root:Finished with link https://stackoverflow.com/questions/6797984/how-do-i-lowercase-a-string-in-python, now marking StackOverflow Scraping Manager's Worker #145 for death. -INFO:root:StackOverflow Scraping Manager's Worker #145 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #146 received a link, https://stackoverflow.com/questions/1712227/how-do-i-get-the-number-of-elements-in-a-list&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1712227/how-do-i-get-the-number-of-elements-in-a-list&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 181 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/1712227/how-do-i-get-the-number-of-elements-in-a-list HTTP/1.1" 200 45865 -INFO:root:Finished with link https://stackoverflow.com/questions/1712227/how-do-i-get-the-number-of-elements-in-a-list, now marking StackOverflow Scraping Manager's Worker #146 for death. -INFO:root:StackOverflow Scraping Manager's Worker #146 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #147 received a link, https://stackoverflow.com/questions/6996603/delete-a-file-or-folder&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/6996603/delete-a-file-or-folder&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 159 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/6996603/delete-a-file-or-folder HTTP/1.1" 200 50376 -INFO:root:Finished with link https://stackoverflow.com/questions/6996603/delete-a-file-or-folder, now marking StackOverflow Scraping Manager's Worker #147 for death. -INFO:root:StackOverflow Scraping Manager's Worker #147 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #148 received a link, https://stackoverflow.com/questions/606191/convert-bytes-to-a-string&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/606191/convert-bytes-to-a-string&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 160 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/606191/convert-bytes-to-a-string HTTP/1.1" 200 65966 -INFO:root:Finished with link https://stackoverflow.com/questions/606191/convert-bytes-to-a-string, now marking StackOverflow Scraping Manager's Worker #148 for death. -INFO:root:StackOverflow Scraping Manager's Worker #148 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #149 received a link, https://stackoverflow.com/questions/68645/are-static-class-variables-possible-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/68645/are-static-class-variables-possible-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 179 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/68645/are-static-class-variables-possible-in-python HTTP/1.1" 200 70185 -INFO:root:Finished with link https://stackoverflow.com/questions/68645/are-static-class-variables-possible-in-python, now marking StackOverflow Scraping Manager's Worker #149 for death. -INFO:root:StackOverflow Scraping Manager's Worker #149 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #150 received a link, https://stackoverflow.com/questions/930397/getting-the-last-element-of-a-list&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/930397/getting-the-last-element-of-a-list&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 169 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/930397/getting-the-last-element-of-a-list HTTP/1.1" 200 49875 -INFO:root:Finished with link https://stackoverflow.com/questions/930397/getting-the-last-element-of-a-list, now marking StackOverflow Scraping Manager's Worker #150 for death. -INFO:root:StackOverflow Scraping Manager's Worker #150 is dead, no need to kill prematurely. -WARNING:root:StackOverflow Scraping Manager's Worker #151 received a link, https://stackoverflow.com/questions/2720014/how-to-upgrade-all-python-packages-with-pip&key=RGaU7lYPN8L5KbnIfkxmGQ(( that has already been scraped! -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2720014/how-to-upgrade-all-python-packages-with-pip&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 179 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/2720014/how-to-upgrade-all-python-packages-with-pip HTTP/1.1" 200 97398 -INFO:root:Parent link https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow created. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 -DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 200 255 -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 -DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 200 255 -INFO:root:Starting StackExchange API Manager. -INFO:root:Starting StackOverflow Scraping Manager. -INFO:root:New killer, StackOverflow Scraping Manager's Thread Killer, spawned. -INFO:root:New killer, StackExchange API Manager's Thread Killer, spawned. -INFO:root:New worker, StackExchange API Manager's Worker #0, spawned for task https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 -DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 200 15725 -INFO:root:New worker, StackOverflow Scraping Manager's Worker #0, spawned for task https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #1, spawned for task https://stackoverflow.com/questions/394809/does-python-have-a-ternary-conditional-operator. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #2, spawned for task https://stackoverflow.com/questions/100003/what-are-metaclasses-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #3, spawned for task https://stackoverflow.com/questions/419163/what-does-if-name-main-do. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #4, spawned for task https://stackoverflow.com/questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #5, spawned for task https://stackoverflow.com/questions/89228/calling-an-external-command-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #6, spawned for task https://stackoverflow.com/questions/38987/how-to-merge-two-dictionaries-in-a-single-expression. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #7, spawned for task https://stackoverflow.com/questions/273192/how-can-i-safely-create-a-nested-directory. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #8, spawned for task https://stackoverflow.com/questions/3437059/does-python-have-a-string-contains-substring-method. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #9, spawned for task https://stackoverflow.com/questions/3207219/how-do-i-list-all-files-of-a-directory. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #10, spawned for task https://stackoverflow.com/questions/613183/how-do-i-sort-a-dictionary-by-value. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #11, spawned for task https://stackoverflow.com/questions/53513/how-do-i-check-if-a-list-is-empty. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #12, spawned for task https://stackoverflow.com/questions/136097/what-is-the-difference-between-staticmethod-and-classmethod. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #13, spawned for task https://stackoverflow.com/questions/522563/accessing-the-index-in-for-loops. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #14, spawned for task https://stackoverflow.com/questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #15, spawned for task https://stackoverflow.com/questions/509211/understanding-slice-notation. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #16, spawned for task https://stackoverflow.com/questions/423379/using-global-variables-in-a-function. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #17, spawned for task https://stackoverflow.com/questions/3294889/iterating-over-dictionaries-using-for-loops. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #18, spawned for task https://stackoverflow.com/questions/176918/finding-the-index-of-an-item-given-a-list-containing-it-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #19, spawned for task https://stackoverflow.com/questions/952914/how-to-make-a-flat-list-out-of-list-of-lists. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #20, spawned for task https://stackoverflow.com/questions/1602934/check-if-a-given-key-already-exists-in-a-dictionary. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #21, spawned for task https://stackoverflow.com/questions/739654/how-to-make-a-chain-of-function-decorators. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #22, spawned for task https://stackoverflow.com/questions/510348/how-can-i-make-a-time-delay-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #23, spawned for task https://stackoverflow.com/questions/415511/how-to-get-the-current-time-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #24, spawned for task https://stackoverflow.com/questions/1436703/difference-between-str-and-repr. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #25, spawned for task https://stackoverflow.com/questions/4750806/how-do-i-install-pip-on-windows. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #26, spawned for task https://stackoverflow.com/questions/6470428/catch-multiple-exceptions-in-one-line-except-block. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #27, spawned for task https://stackoverflow.com/questions/986006/how-do-i-pass-a-variable-by-reference. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #28, spawned for task https://stackoverflow.com/questions/1132941/least-astonishment-and-the-mutable-default-argument. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #29, spawned for task https://stackoverflow.com/questions/1024847/add-new-keys-to-a-dictionary. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #30, spawned for task https://stackoverflow.com/questions/576169/understanding-python-super-with-init-methods. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #31, spawned for task https://stackoverflow.com/questions/2612802/how-to-clone-or-copy-a-list. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #32, spawned for task https://stackoverflow.com/questions/101754/is-there-a-way-to-run-python-on-android. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #33, spawned for task https://stackoverflow.com/questions/1720421/how-do-i-concatenate-two-lists-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #34, spawned for task https://stackoverflow.com/questions/379906/how-do-i-parse-a-string-to-a-float-or-int. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #35, spawned for task https://stackoverflow.com/questions/3277503/how-to-read-a-file-line-by-line-into-a-list. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #36, spawned for task https://stackoverflow.com/questions/36901/what-does-double-star-asterisk-and-star-asterisk-do-for-parameters. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #37, spawned for task https://stackoverflow.com/questions/123198/how-do-i-copy-a-file-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #38, spawned for task https://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #39, spawned for task https://stackoverflow.com/questions/2052390/manually-raising-throwing-an-exception-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #40, spawned for task https://stackoverflow.com/questions/466345/converting-string-into-datetime. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #41, spawned for task https://stackoverflow.com/questions/663171/how-to-substring-a-string-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #42, spawned for task https://stackoverflow.com/questions/448271/what-is-init-py-for. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #43, spawned for task https://stackoverflow.com/questions/5137497/find-current-directory-and-files-directory. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #44, spawned for task https://stackoverflow.com/questions/287871/how-to-print-colored-text-in-terminal-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #45, spawned for task https://stackoverflow.com/questions/6797984/how-do-i-lowercase-a-string-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #46, spawned for task https://stackoverflow.com/questions/1712227/how-do-i-get-the-number-of-elements-in-a-list. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #47, spawned for task https://stackoverflow.com/questions/6996603/delete-a-file-or-folder. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #48, spawned for task https://stackoverflow.com/questions/606191/convert-bytes-to-a-string. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #49, spawned for task https://stackoverflow.com/questions/68645/are-static-class-variables-possible-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #50, spawned for task https://stackoverflow.com/questions/930397/getting-the-last-element-of-a-list. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #51, spawned for task https://stackoverflow.com/questions/2720014/how-to-upgrade-all-python-packages-with-pip. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #52, spawned for task https://stackoverflow.com/questions/30081275/why-is-1000000000000000-in-range1000000000000001-so-fast-in-python-3. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #53, spawned for task https://stackoverflow.com/questions/60208/replacements-for-switch-statement-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #54, spawned for task https://stackoverflow.com/questions/4906977/how-to-access-environment-variable-values. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #55, spawned for task https://stackoverflow.com/questions/9371238/why-is-reading-lines-from-stdin-much-slower-in-c-than-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #56, spawned for task https://stackoverflow.com/questions/17271319/how-do-i-install-pip-on-macos-or-os-x. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #57, spawned for task https://stackoverflow.com/questions/493386/how-to-print-without-newline-or-space. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #58, spawned for task https://stackoverflow.com/questions/72899/how-do-i-sort-a-list-of-dictionaries-by-a-value-of-the-dictionary. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #59, spawned for task https://stackoverflow.com/questions/2225038/determine-the-type-of-an-object. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #60, spawned for task https://stackoverflow.com/questions/493819/python-join-why-is-it-string-joinlist-instead-of-list-joinstring. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #61, spawned for task https://stackoverflow.com/questions/735975/static-methods-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #62, spawned for task https://stackoverflow.com/questions/306400/how-to-randomly-select-an-item-from-a-list. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #63, spawned for task https://stackoverflow.com/questions/332289/how-do-you-change-the-size-of-figures-drawn-with-matplotlib. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #64, spawned for task https://stackoverflow.com/questions/275018/how-can-i-remove-a-trailing-newline. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #65, spawned for task https://stackoverflow.com/questions/12179271/meaning-of-classmethod-and-staticmethod-for-beginner. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #66, spawned for task https://stackoverflow.com/questions/3061/calling-a-function-of-a-module-by-using-its-name-a-string. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #67, spawned for task https://stackoverflow.com/questions/11346283/renaming-columns-in-pandas. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #68, spawned for task https://stackoverflow.com/questions/354038/how-do-i-check-if-a-string-is-a-number-float. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #69, spawned for task https://stackoverflow.com/questions/17071871/select-rows-from-a-dataframe-based-on-values-in-a-column-in-pandas. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #70, spawned for task https://stackoverflow.com/questions/101268/hidden-features-of-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #71, spawned for task https://stackoverflow.com/questions/455612/limiting-floats-to-two-decimal-points. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #72, spawned for task https://stackoverflow.com/questions/11277432/how-to-remove-a-key-from-a-python-dictionary. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #73, spawned for task https://stackoverflow.com/questions/610883/how-to-know-if-an-object-has-an-attribute-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #74, spawned for task https://stackoverflow.com/questions/4706499/how-do-you-append-to-a-file-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #75, spawned for task https://stackoverflow.com/questions/2835559/why-cant-python-parse-this-json-data. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #76, spawned for task https://stackoverflow.com/questions/2600191/how-can-i-count-the-occurrences-of-a-list-item. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #77, spawned for task https://stackoverflow.com/questions/990754/how-to-leave-exit-deactivate-a-python-virtualenv. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #78, spawned for task https://stackoverflow.com/questions/1450393/how-do-you-read-from-stdin. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #79, spawned for task https://stackoverflow.com/questions/3394835/use-of-args-and-kwargs. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #80, spawned for task https://stackoverflow.com/questions/402504/how-to-determine-a-python-variables-type. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #81, spawned for task https://stackoverflow.com/questions/16476924/how-to-iterate-over-rows-in-a-dataframe-in-pandas. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #82, spawned for task https://stackoverflow.com/questions/5082452/string-formatting-vs-format. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #83, spawned for task https://stackoverflow.com/questions/627435/how-to-remove-an-element-from-a-list-by-index. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #84, spawned for task https://stackoverflow.com/questions/931092/reverse-a-string-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #85, spawned for task https://stackoverflow.com/questions/961632/converting-integer-to-string. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #86, spawned for task https://stackoverflow.com/questions/510972/getting-the-class-name-of-an-instance. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #87, spawned for task https://stackoverflow.com/questions/5466451/how-can-i-print-literal-curly-brace-characters-in-python-string-and-also-use-fo. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #88, spawned for task https://stackoverflow.com/questions/339007/nicest-way-to-pad-zeroes-to-a-string. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #89, spawned for task https://stackoverflow.com/questions/2257441/random-string-generation-with-upper-case-letters-and-digits. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #90, spawned for task https://stackoverflow.com/questions/9573244/how-to-check-if-the-string-is-empty. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #91, spawned for task https://stackoverflow.com/questions/1747817/create-a-dictionary-with-list-comprehension. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #92, spawned for task https://stackoverflow.com/questions/9942594/unicodeencodeerror-ascii-codec-cant-encode-character-u-xa0-in-position-20. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #93, spawned for task https://stackoverflow.com/questions/5574702/how-to-print-to-stderr-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #94, spawned for task https://stackoverflow.com/questions/2846653/how-to-use-threading-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #95, spawned for task https://stackoverflow.com/questions/3996904/generate-random-integers-between-0-and-9. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #96, spawned for task https://stackoverflow.com/questions/5844672/delete-an-element-from-a-dictionary. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #97, spawned for task https://stackoverflow.com/questions/1301346/what-is-the-meaning-of-a-single-and-a-double-underscore-before-an-object-name. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #98, spawned for task https://stackoverflow.com/questions/36932/how-can-i-represent-an-enum-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #99, spawned for task https://stackoverflow.com/questions/582336/how-can-you-profile-a-python-script. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 -DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 200 15723 -WARNING:root:Request count for key RGaU7lYPN8L5KbnIfkxmGQ(( is off by 1 -INFO:root:New worker, StackOverflow Scraping Manager's Worker #100, spawned for task https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #101, spawned for task https://stackoverflow.com/questions/394809/does-python-have-a-ternary-conditional-operator. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #102, spawned for task https://stackoverflow.com/questions/100003/what-are-metaclasses-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #103, spawned for task https://stackoverflow.com/questions/419163/what-does-if-name-main-do. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #104, spawned for task https://stackoverflow.com/questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #105, spawned for task https://stackoverflow.com/questions/89228/calling-an-external-command-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #106, spawned for task https://stackoverflow.com/questions/38987/how-to-merge-two-dictionaries-in-a-single-expression. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #107, spawned for task https://stackoverflow.com/questions/273192/how-can-i-safely-create-a-nested-directory. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #108, spawned for task https://stackoverflow.com/questions/3437059/does-python-have-a-string-contains-substring-method. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #109, spawned for task https://stackoverflow.com/questions/3207219/how-do-i-list-all-files-of-a-directory. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #110, spawned for task https://stackoverflow.com/questions/613183/how-do-i-sort-a-dictionary-by-value. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #111, spawned for task https://stackoverflow.com/questions/53513/how-do-i-check-if-a-list-is-empty. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #112, spawned for task https://stackoverflow.com/questions/136097/what-is-the-difference-between-staticmethod-and-classmethod. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #113, spawned for task https://stackoverflow.com/questions/522563/accessing-the-index-in-for-loops. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #114, spawned for task https://stackoverflow.com/questions/252703/what-is-the-difference-between-pythons-list-methods-append-and-extend. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #115, spawned for task https://stackoverflow.com/questions/509211/understanding-slice-notation. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #116, spawned for task https://stackoverflow.com/questions/423379/using-global-variables-in-a-function. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #117, spawned for task https://stackoverflow.com/questions/3294889/iterating-over-dictionaries-using-for-loops. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #118, spawned for task https://stackoverflow.com/questions/176918/finding-the-index-of-an-item-given-a-list-containing-it-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #119, spawned for task https://stackoverflow.com/questions/952914/how-to-make-a-flat-list-out-of-list-of-lists. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #120, spawned for task https://stackoverflow.com/questions/1602934/check-if-a-given-key-already-exists-in-a-dictionary. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #121, spawned for task https://stackoverflow.com/questions/739654/how-to-make-a-chain-of-function-decorators. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #122, spawned for task https://stackoverflow.com/questions/510348/how-can-i-make-a-time-delay-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #123, spawned for task https://stackoverflow.com/questions/415511/how-to-get-the-current-time-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #124, spawned for task https://stackoverflow.com/questions/1436703/difference-between-str-and-repr. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #125, spawned for task https://stackoverflow.com/questions/4750806/how-do-i-install-pip-on-windows. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #126, spawned for task https://stackoverflow.com/questions/6470428/catch-multiple-exceptions-in-one-line-except-block. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #127, spawned for task https://stackoverflow.com/questions/986006/how-do-i-pass-a-variable-by-reference. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #128, spawned for task https://stackoverflow.com/questions/1132941/least-astonishment-and-the-mutable-default-argument. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #129, spawned for task https://stackoverflow.com/questions/1024847/add-new-keys-to-a-dictionary. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #130, spawned for task https://stackoverflow.com/questions/576169/understanding-python-super-with-init-methods. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #131, spawned for task https://stackoverflow.com/questions/2612802/how-to-clone-or-copy-a-list. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #132, spawned for task https://stackoverflow.com/questions/101754/is-there-a-way-to-run-python-on-android. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #133, spawned for task https://stackoverflow.com/questions/1720421/how-do-i-concatenate-two-lists-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #134, spawned for task https://stackoverflow.com/questions/379906/how-do-i-parse-a-string-to-a-float-or-int. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #135, spawned for task https://stackoverflow.com/questions/3277503/how-to-read-a-file-line-by-line-into-a-list. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #136, spawned for task https://stackoverflow.com/questions/36901/what-does-double-star-asterisk-and-star-asterisk-do-for-parameters. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #137, spawned for task https://stackoverflow.com/questions/123198/how-do-i-copy-a-file-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #138, spawned for task https://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #139, spawned for task https://stackoverflow.com/questions/2052390/manually-raising-throwing-an-exception-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #140, spawned for task https://stackoverflow.com/questions/466345/converting-string-into-datetime. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #141, spawned for task https://stackoverflow.com/questions/663171/how-to-substring-a-string-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #142, spawned for task https://stackoverflow.com/questions/448271/what-is-init-py-for. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #143, spawned for task https://stackoverflow.com/questions/5137497/find-current-directory-and-files-directory. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #144, spawned for task https://stackoverflow.com/questions/287871/how-to-print-colored-text-in-terminal-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #145, spawned for task https://stackoverflow.com/questions/6797984/how-do-i-lowercase-a-string-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #146, spawned for task https://stackoverflow.com/questions/1712227/how-do-i-get-the-number-of-elements-in-a-list. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #147, spawned for task https://stackoverflow.com/questions/6996603/delete-a-file-or-folder. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #148, spawned for task https://stackoverflow.com/questions/606191/convert-bytes-to-a-string. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #149, spawned for task https://stackoverflow.com/questions/68645/are-static-class-variables-possible-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #150, spawned for task https://stackoverflow.com/questions/930397/getting-the-last-element-of-a-list. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #151, spawned for task https://stackoverflow.com/questions/2720014/how-to-upgrade-all-python-packages-with-pip. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #152, spawned for task https://stackoverflow.com/questions/30081275/why-is-1000000000000000-in-range1000000000000001-so-fast-in-python-3. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #153, spawned for task https://stackoverflow.com/questions/60208/replacements-for-switch-statement-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #154, spawned for task https://stackoverflow.com/questions/4906977/how-to-access-environment-variable-values. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #155, spawned for task https://stackoverflow.com/questions/9371238/why-is-reading-lines-from-stdin-much-slower-in-c-than-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #156, spawned for task https://stackoverflow.com/questions/17271319/how-do-i-install-pip-on-macos-or-os-x. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #157, spawned for task https://stackoverflow.com/questions/493386/how-to-print-without-newline-or-space. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #158, spawned for task https://stackoverflow.com/questions/72899/how-do-i-sort-a-list-of-dictionaries-by-a-value-of-the-dictionary. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #159, spawned for task https://stackoverflow.com/questions/2225038/determine-the-type-of-an-object. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #160, spawned for task https://stackoverflow.com/questions/493819/python-join-why-is-it-string-joinlist-instead-of-list-joinstring. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #161, spawned for task https://stackoverflow.com/questions/735975/static-methods-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #162, spawned for task https://stackoverflow.com/questions/306400/how-to-randomly-select-an-item-from-a-list. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #163, spawned for task https://stackoverflow.com/questions/332289/how-do-you-change-the-size-of-figures-drawn-with-matplotlib. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #164, spawned for task https://stackoverflow.com/questions/275018/how-can-i-remove-a-trailing-newline. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #165, spawned for task https://stackoverflow.com/questions/12179271/meaning-of-classmethod-and-staticmethod-for-beginner. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #166, spawned for task https://stackoverflow.com/questions/3061/calling-a-function-of-a-module-by-using-its-name-a-string. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #167, spawned for task https://stackoverflow.com/questions/11346283/renaming-columns-in-pandas. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #168, spawned for task https://stackoverflow.com/questions/354038/how-do-i-check-if-a-string-is-a-number-float. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #169, spawned for task https://stackoverflow.com/questions/17071871/select-rows-from-a-dataframe-based-on-values-in-a-column-in-pandas. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #170, spawned for task https://stackoverflow.com/questions/101268/hidden-features-of-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #171, spawned for task https://stackoverflow.com/questions/455612/limiting-floats-to-two-decimal-points. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #172, spawned for task https://stackoverflow.com/questions/11277432/how-to-remove-a-key-from-a-python-dictionary. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #173, spawned for task https://stackoverflow.com/questions/610883/how-to-know-if-an-object-has-an-attribute-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #174, spawned for task https://stackoverflow.com/questions/4706499/how-do-you-append-to-a-file-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #175, spawned for task https://stackoverflow.com/questions/2835559/why-cant-python-parse-this-json-data. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #176, spawned for task https://stackoverflow.com/questions/2600191/how-can-i-count-the-occurrences-of-a-list-item. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #177, spawned for task https://stackoverflow.com/questions/990754/how-to-leave-exit-deactivate-a-python-virtualenv. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #178, spawned for task https://stackoverflow.com/questions/1450393/how-do-you-read-from-stdin. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #179, spawned for task https://stackoverflow.com/questions/3394835/use-of-args-and-kwargs. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #180, spawned for task https://stackoverflow.com/questions/402504/how-to-determine-a-python-variables-type. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #181, spawned for task https://stackoverflow.com/questions/16476924/how-to-iterate-over-rows-in-a-dataframe-in-pandas. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #182, spawned for task https://stackoverflow.com/questions/5082452/string-formatting-vs-format. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #183, spawned for task https://stackoverflow.com/questions/627435/how-to-remove-an-element-from-a-list-by-index. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #184, spawned for task https://stackoverflow.com/questions/931092/reverse-a-string-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #185, spawned for task https://stackoverflow.com/questions/961632/converting-integer-to-string. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #186, spawned for task https://stackoverflow.com/questions/510972/getting-the-class-name-of-an-instance. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #187, spawned for task https://stackoverflow.com/questions/5466451/how-can-i-print-literal-curly-brace-characters-in-python-string-and-also-use-fo. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #188, spawned for task https://stackoverflow.com/questions/339007/nicest-way-to-pad-zeroes-to-a-string. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #189, spawned for task https://stackoverflow.com/questions/2257441/random-string-generation-with-upper-case-letters-and-digits. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #190, spawned for task https://stackoverflow.com/questions/9573244/how-to-check-if-the-string-is-empty. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #191, spawned for task https://stackoverflow.com/questions/1747817/create-a-dictionary-with-list-comprehension. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #192, spawned for task https://stackoverflow.com/questions/9942594/unicodeencodeerror-ascii-codec-cant-encode-character-u-xa0-in-position-20. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #193, spawned for task https://stackoverflow.com/questions/5574702/how-to-print-to-stderr-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #194, spawned for task https://stackoverflow.com/questions/2846653/how-to-use-threading-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #195, spawned for task https://stackoverflow.com/questions/3996904/generate-random-integers-between-0-and-9. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #196, spawned for task https://stackoverflow.com/questions/5844672/delete-an-element-from-a-dictionary. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #197, spawned for task https://stackoverflow.com/questions/1301346/what-is-the-meaning-of-a-single-and-a-double-underscore-before-an-object-name. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #198, spawned for task https://stackoverflow.com/questions/36932/how-can-i-represent-an-enum-in-python. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #199, spawned for task https://stackoverflow.com/questions/582336/how-can-you-profile-a-python-script. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/231767/what-does-the-yield-keyword-do&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 165 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/231767/what-does-the-yield-keyword-do HTTP/1.1" 200 107016 -INFO:root:Finished with link https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do, now marking StackOverflow Scraping Manager's Worker #0 for death. -INFO:root:StackOverflow Scraping Manager's Worker #0 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/394809/does-python-have-a-ternary-conditional-operator&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 182 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/394809/does-python-have-a-ternary-conditional-operator HTTP/1.1" 200 74458 -INFO:root:Finished with link https://stackoverflow.com/questions/394809/does-python-have-a-ternary-conditional-operator, now marking StackOverflow Scraping Manager's Worker #1 for death. -INFO:root:StackOverflow Scraping Manager's Worker #1 is dead, no need to kill prematurely. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): stackoverflow.com:443 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/100003/what-are-metaclasses-in-python&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 301 165 -DEBUG:urllib3.connectionpool:https://stackoverflow.com:443 "GET /questions/100003/what-are-metaclasses-in-python HTTP/1.1" 200 78849 -INFO:root:Finished with link https://stackoverflow.com/questions/100003/what-are-metaclasses-in-python, now marking StackOverflow Scraping Manager's Worker #2 for death. -INFO:root:StackOverflow Scraping Manager's Worker #2 is dead, no need to kill prematurely. -INFO:root:Parent link https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow created. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 -DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 200 255 -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 -DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 200 255 -INFO:root:Starting StackExchange API Manager. -INFO:root:Starting StackOverflow Scraping Manager. -INFO:root:New killer, StackOverflow Scraping Manager's Thread Killer, spawned. -INFO:root:New killer, StackExchange API Manager's Thread Killer, spawned. -INFO:root:New worker, StackExchange API Manager's Worker #0, spawned for task https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow. -INFO:root:Parent link https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow created. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 -DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 200 254 -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 -DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 200 255 -INFO:root:Starting StackExchange API Manager. -INFO:root:Starting StackOverflow Scraping Manager. -INFO:root:New killer, StackExchange API Manager's Thread Killer, spawned. -INFO:root:New worker, StackExchange API Manager's Worker #0, spawned for task https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow. -INFO:root:New killer, StackOverflow Scraping Manager's Thread Killer, spawned. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 -DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow&page=0&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 400 71 -CRITICAL:root:Unexpected error caught in StackExchange API Manager's Worker #0 after makingrequest with https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow&page=0. -[None] -Now ending process. -INFO:root:Parent link https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow created. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 -DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 200 254 -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 -DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 200 254 -INFO:root:Starting StackExchange API Manager. -INFO:root:Starting StackOverflow Scraping Manager. -INFO:root:New killer, StackExchange API Manager's Thread Killer, spawned. -INFO:root:New killer, StackOverflow Scraping Manager's Thread Killer, spawned. -INFO:root:New worker, StackExchange API Manager's Worker #0, spawned. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 -DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow&page=0&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 400 71 -CRITICAL:root:Unexpected error caught in StackExchange API Manager's Worker #0 after makingrequest with https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow&page=0. -[None] -Now ending process. -INFO:root:Parent link https://api.stackexchange.com/2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow created. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 -DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 200 255 -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 -DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/info?site=stackoverflow&key=1yfsxJa1AC*GlxN6RSemCQ(( HTTP/1.1" 200 255 -INFO:root:Starting StackExchange API Manager. -INFO:root:Starting StackOverflow Scraping Manager. -INFO:root:New killer, StackOverflow Scraping Manager's Thread Killer, spawned. -INFO:root:New killer, StackExchange API Manager's Thread Killer, spawned. -INFO:root:New worker, StackExchange API Manager's Worker #0, spawned. -DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.stackexchange.com:443 -DEBUG:urllib3.connectionpool:https://api.stackexchange.com:443 "GET /2.2/questions?sort=votes&order=desc&tagged=python&pagesize=100&site=stackoverflow&key=RGaU7lYPN8L5KbnIfkxmGQ(( HTTP/1.1" 200 15745 -INFO:root:New worker, StackOverflow Scraping Manager's Worker #0, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #1, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #2, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #3, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #4, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #5, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #6, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #7, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #8, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #9, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #10, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #11, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #12, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #13, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #14, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #15, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #16, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #17, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #18, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #19, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #20, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #21, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #22, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #23, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #24, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #25, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #26, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #27, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #28, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #29, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #30, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #31, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #32, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #33, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #34, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #35, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #36, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #37, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #38, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #39, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #40, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #41, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #42, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #43, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #44, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #45, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #46, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #47, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #48, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #49, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #50, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #51, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #52, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #53, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #54, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #55, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #56, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #57, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #58, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #59, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #60, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #61, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #62, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #63, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #64, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #65, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #66, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #67, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #68, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #69, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #70, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #71, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #72, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #73, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #74, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #75, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #76, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #77, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #78, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #79, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #80, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #81, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #82, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #83, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #84, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #85, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #86, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #87, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #88, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #89, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #90, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #91, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #92, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #93, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #94, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #95, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #96, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #97, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #98, spawned. -INFO:root:New worker, StackOverflow Scraping Manager's Worker #99, spawned. diff --git a/stackoversight/scraping/scraper.py b/stackoversight/scraping/scraper.py index ed96a3b..1cd7cc6 100644 --- a/stackoversight/scraping/scraper.py +++ b/stackoversight/scraping/scraper.py @@ -1,19 +1,12 @@ -# To set the http_proxy environment variable -import os -# For making the site requests and overall request management -from stackoversight.scraping.stack_overflow import StackOverflow -# For child link queue -from queue import Queue -# For threading the scraping process -import threading -# For serialization import json -# For thread management -from stackoversight.scraping.thread_executioner import ThreadExecutioner -# For logging import logging -# For time stamp on log +import os +import threading import time +from queue import Queue + +from stackoversight.scraping.stack_overflow import StackOverflow +from stackoversight.scraping.thread_executioner import ThreadExecutioner class StackOversight(object): @@ -133,14 +126,12 @@ def scrape_child_link(self, link: str, used_children: Queue, site: StackOverflow with self.code_lock: json.dump(snippet, code_io_handle) - # code_io_handle.write(code) for text in site.get_text(response): snippet = {'snippet': text} with self.text_lock: json.dump(snippet, text_io_handle) - # text_io_handle.write(text) logging.info(f'Finished with link {link}, now marking {current_thread_name} for death.') used_children.put(threading.current_thread()) @@ -158,8 +149,12 @@ def scrape_child_link(self, link: str, used_children: Queue, site: StackOverflow order=StackOverflow.Orders.descending.value, tag=StackOverflow.Tags.python.value, page_size=100) +java_posts = StackOverflow.create_parent_link(sort=StackOverflow.Sorts.votes.value, + order=StackOverflow.Orders.descending.value, + tag=StackOverflow.Tags.java.value, page_size=100) + link_queue = Queue() -link_queue.put(python_posts) +link_queue.put(java_posts) _kill = threading.Event() diff --git a/stackoversight/scraping/site_balancer.py b/stackoversight/scraping/site_balancer.py index 3cb0991..fd252f1 100644 --- a/stackoversight/scraping/site_balancer.py +++ b/stackoversight/scraping/site_balancer.py @@ -1,8 +1,7 @@ -# Data structure for balancing -from stackoversight.scraping.release_heap import AbstractReleaseHeap -# For logging import logging +from stackoversight.scraping.release_heap import AbstractReleaseHeap + # really just a wrapper for ReleaseHeap, designed for client_ids to be iterated through class SiteBalancer(AbstractReleaseHeap): diff --git a/stackoversight/scraping/stack_overflow.py b/stackoversight/scraping/stack_overflow.py index c56ac97..5d0de29 100644 --- a/stackoversight/scraping/stack_overflow.py +++ b/stackoversight/scraping/stack_overflow.py @@ -1,15 +1,11 @@ -# For basic Site class -from stackoversight.scraping.abstractsite import AbstractSite -# For site tags and sorts +import logging +import threading from enum import Enum -# For proxy exception -import requests -# Need that mutable tuple my dude + from recordclass.mutabletuple import mutabletuple -# For thread lock -import threading -# For logging -import logging + +import requests +from stackoversight.scraping.abstractsite import AbstractSite class StackOverflow(AbstractSite): @@ -64,6 +60,8 @@ class Tags(Enum): python2 = 'python-2.7' python3 = 'python-3.x' + java = 'java' + def __init__(self, client_keys: list): super(StackOverflow, self).__init__([self.init_key(key) for key in client_keys], self.timeout_sec, self.limit) diff --git a/stackoversight/scraping/thread_executioner.py b/stackoversight/scraping/thread_executioner.py index 85532ee..fee345c 100644 --- a/stackoversight/scraping/thread_executioner.py +++ b/stackoversight/scraping/thread_executioner.py @@ -1,11 +1,7 @@ -# For threading -import threading -# For victim queue -from queue import Queue -# For raising error import ctypes -# For logging import logging +import threading +from queue import Queue class ThreadExecutioner: