2026-07-31 08:31:09 [scrapy.utils.log] INFO: Scrapy 2.8.0 started (bot: modularspiders) 2026-07-31 08:31:41 [scrapy.utils.log] INFO: Versions: lxml 4.9.2.0, libxml2 2.9.14, cssselect 1.2.0, parsel 1.7.0, w3lib 2.1.1, Twisted 22.10.0, Python 3.10.15 (main, Oct 19 2024, 04:00:28) [GCC 12.2.0], pyOpenSSL 23.1.1 (OpenSSL 3.1.0 14 Mar 2023), cryptography 40.0.1, Platform Linux-5.10.0-21-amd64-x86_64-with-glibc2.36 2026-07-31 08:32:13 [scrapy.crawler] INFO: Overridden settings: {'BOT_NAME': 'modularspiders', 'CLOSESPIDER_TIMEOUT': 3600, 'CONCURRENT_REQUESTS': 4, 'LOG_FILE': 'logs/default/post/dc3067ec8cb511f1ac510242ac11000e.log', 'NEWSPIDER_MODULE': 'modularspiders.spiders', 'ROBOTSTXT_OBEY': True, 'SPIDER_MODULES': ['modularspiders.spiders'], 'USER_AGENT': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) ' 'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 ' 'Safari/537.36'} 2026-07-31 08:32:14 [py.warnings] WARNING: /code/lib/python3.10/site-packages/scrapy/utils/request.py:232: ScrapyDeprecationWarning: '2.6' is a deprecated value for the 'REQUEST_FINGERPRINTER_IMPLEMENTATION' setting. It is also the default value. In other words, it is normal to get this warning if you have not defined a value for the 'REQUEST_FINGERPRINTER_IMPLEMENTATION' setting. This is so for backward compatibility reasons, but it will change in a future version of Scrapy. See the documentation of the 'REQUEST_FINGERPRINTER_IMPLEMENTATION' setting for information on how to handle this deprecation. return cls(crawler) 2026-07-31 08:32:45 [scrapy.utils.log] DEBUG: Using reactor: twisted.internet.epollreactor.EPollReactor 2026-07-31 08:32:46 [scrapy.extensions.telnet] INFO: Telnet Password: 6775a10d41c631a6 2026-07-31 08:32:47 [scrapy.middleware] INFO: Enabled extensions: ['scrapy.extensions.corestats.CoreStats', 'scrapy.extensions.telnet.TelnetConsole', 'scrapy.extensions.memusage.MemoryUsage', 'scrapy.extensions.logstats.LogStats', 'scrapy.extensions.closespider.CloseSpider'] 2026-07-31 08:32:50 [scrapy.middleware] INFO: Enabled downloader middlewares: ['scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware', 'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware', 'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware', 'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware', 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware', 'scrapy.downloadermiddlewares.retry.RetryMiddleware', 'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware', 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware', 'scrapy.downloadermiddlewares.redirect.RedirectMiddleware', 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware', 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware', 'scrapy.downloadermiddlewares.stats.DownloaderStats'] 2026-07-31 08:32:50 [scrapy.middleware] INFO: Enabled spider middlewares: ['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware', 'scrapy.spidermiddlewares.offsite.OffsiteMiddleware', 'scrapy.spidermiddlewares.referer.RefererMiddleware', 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware', 'scrapy.spidermiddlewares.depth.DepthMiddleware'] 2026-07-31 08:32:51 [scrapy.middleware] INFO: Enabled item pipelines: ['modularspiders.pipelines.MinimumViableItemPipeline', 'modularspiders.pipelines.RedisExporter', 'modularspiders.pipelines.BulkStoreUpdate'] 2026-07-31 08:32:51 [scrapy.core.engine] INFO: Spider opened 2026-07-31 08:33:29 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min) 2026-07-31 08:33:31 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6032 2026-07-31 08:36:43 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min) 2026-07-31 08:37:24 [scrapy.core.engine] DEBUG: Crawled (200) (referer: None) 2026-07-31 08:37:25 [scrapy.core.engine] DEBUG: Crawled (200) (referer: None) 2026-07-31 08:38:29 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://postmodular.co.uk/sitemap_index.xml) 2026-07-31 08:38:29 [scrapy.extensions.logstats] INFO: Crawled 3 pages (at 3 pages/min), scraped 0 items (at 0 items/min) 2026-07-31 08:38:29 [scrapy.extensions.logstats] INFO: Crawled 3 pages (at 0 pages/min), scraped 0 items (at 0 items/min) 2026-07-31 08:38:31 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://postmodular.co.uk/product-sitemap.xml) 2026-07-31 08:52:05 [post] ERROR: No product description found at https://postmodular.co.uk/shop/ 2026-07-31 08:52:06 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://postmodular.co.uk/product-sitemap.xml) 2026-07-31 08:52:06 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://postmodular.co.uk/product-sitemap.xml) 2026-07-31 08:52:06 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://postmodular.co.uk/product-sitemap.xml) 2026-07-31 08:52:06 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://postmodular.co.uk/product-sitemap.xml) 2026-07-31 08:52:06 [scrapy.extensions.logstats] INFO: Crawled 8 pages (at 5 pages/min), scraped 0 items (at 0 items/min) 2026-07-31 09:14:08 [scrapy.extensions.logstats] INFO: Crawled 8 pages (at 0 pages/min), scraped 0 items (at 0 items/min) 2026-07-31 09:14:08 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 1 times): User timeout caused connection failure: Getting https://postmodular.co.uk/modules/flip-flop/ took longer than 180.0 seconds.. 2026-07-31 09:14:08 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 1 times): User timeout caused connection failure: Getting https://postmodular.co.uk/modules/floating-ring-cables/ took longer than 180.0 seconds.. 2026-07-31 09:14:08 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 1 times): User timeout caused connection failure: Getting https://postmodular.co.uk/modules/fsr-2p/ took longer than 180.0 seconds.. 2026-07-31 09:14:08 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 1 times): User timeout caused connection failure: Getting https://postmodular.co.uk/modules/evin-209/ took longer than 180.0 seconds.. 2026-07-31 09:14:08 [scrapy.core.scraper] DEBUG: Scraped from <200 https://postmodular.co.uk/modules/fhx-1-expander-for-fh-1/> {'batch_id': '2532', 'currency_code': 'GBP', 'html': None, 'image_url': 'https://postmodular.co.uk/wp-content/uploads/FHX-1.jpg', 'is_used': False, 'name': 'FHX-1 (expander for FH-1)', 'page_metadata': None, 'price': '115', 'ships_from_region': 'GB', 'stock_status': 0, 'store_code': 'post', 'url': 'https://postmodular.co.uk/modules/fhx-1-expander-for-fh-1/', 'vat_included': False} 2026-07-31 09:14:08 [scrapy.core.scraper] DEBUG: Scraped from <200 https://postmodular.co.uk/modules/addac111-ultra-wav-player/> {'batch_id': '2532', 'currency_code': 'GBP', 'html': None, 'image_url': 'https://postmodular.co.uk/wp-content/uploads/ADDAC111_F.jpg', 'is_used': False, 'name': 'ADDAC111 – Ultra .WAV Player', 'page_metadata': None, 'price': '475', 'ships_from_region': 'GB', 'stock_status': 0, 'store_code': 'post', 'url': 'https://postmodular.co.uk/modules/addac111-ultra-wav-player/', 'vat_included': False} 2026-07-31 09:14:08 [scrapy.core.scraper] DEBUG: Scraped from <200 https://postmodular.co.uk/modules/7u-case-joiners-pair/> {'batch_id': '2532', 'currency_code': 'GBP', 'html': None, 'image_url': 'https://postmodular.co.uk/wp-content/uploads/joinersoncase.jpg', 'is_used': False, 'name': '7U case Joiners (pair)', 'page_metadata': None, 'price': '38', 'ships_from_region': 'GB', 'stock_status': 0, 'store_code': 'post', 'url': 'https://postmodular.co.uk/modules/7u-case-joiners-pair/', 'vat_included': False} 2026-07-31 09:14:08 [scrapy.core.scraper] DEBUG: Scraped from <200 https://postmodular.co.uk/modules/904a-low-pass-filter/> {'batch_id': '2532', 'currency_code': 'GBP', 'html': None, 'image_url': 'https://postmodular.co.uk/wp-content/uploads/904A.jpg', 'is_used': False, 'name': '904A Low Pass Filter', 'page_metadata': None, 'price': '190', 'ships_from_region': 'GB', 'stock_status': 0, 'store_code': 'post', 'url': 'https://postmodular.co.uk/modules/904a-low-pass-filter/', 'vat_included': False} 2026-07-31 09:16:32 [scrapy.extensions.logstats] INFO: Crawled 8 pages (at 0 pages/min), scraped 4 items (at 4 items/min) 2026-07-31 09:16:32 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 1 times): [] 2026-07-31 09:16:32 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 1 times): [] 2026-07-31 09:16:32 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 1 times): [] 2026-07-31 09:16:32 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 1 times): [] 2026-07-31 09:16:34 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://postmodular.co.uk/product-sitemap.xml) 2026-07-31 09:16:35 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://postmodular.co.uk/product-sitemap.xml) 2026-07-31 09:16:35 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://postmodular.co.uk/product-sitemap.xml) 2026-07-31 09:16:35 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://postmodular.co.uk/product-sitemap.xml) 2026-07-31 09:34:14 [scrapy.extensions.logstats] INFO: Crawled 12 pages (at 4 pages/min), scraped 4 items (at 0 items/min) 2026-07-31 09:34:14 [scrapy.core.scraper] DEBUG: Scraped from <200 https://postmodular.co.uk/modules/gozinta/> {'batch_id': '2532', 'currency_code': 'GBP', 'html': None, 'image_url': 'https://postmodular.co.uk/wp-content/uploads/Gozinta_1.jpg', 'is_used': False, 'name': 'Gozinta', 'page_metadata': None, 'price': '90', 'ships_from_region': 'GB', 'stock_status': 0, 'store_code': 'post', 'url': 'https://postmodular.co.uk/modules/gozinta/', 'vat_included': False} 2026-07-31 09:34:15 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 1 times): User timeout caused connection failure: Getting https://postmodular.co.uk/modules/vcob/ took longer than 180.0 seconds.. 2026-07-31 09:34:15 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 1 times): User timeout caused connection failure: Getting https://postmodular.co.uk/modules/olegtron-4060mk2/ took longer than 180.0 seconds.. 2026-07-31 09:34:15 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 1 times): User timeout caused connection failure: Getting https://postmodular.co.uk/modules/richter-megawave/ took longer than 180.0 seconds.. 2026-07-31 09:34:15 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 1 times): User timeout caused connection failure: Getting https://postmodular.co.uk/modules/copy-cat/ took longer than 180.0 seconds.. 2026-07-31 09:34:15 [scrapy.core.scraper] DEBUG: Scraped from <200 https://postmodular.co.uk/modules/hertz-donut/> {'batch_id': '2532', 'currency_code': 'GBP', 'html': None, 'image_url': 'https://postmodular.co.uk/wp-content/uploads/9791monopanel.jpg', 'is_used': False, 'name': 'hertz donut', 'page_metadata': None, 'price': '357', 'ships_from_region': 'GB', 'stock_status': 0, 'store_code': 'post', 'url': 'https://postmodular.co.uk/modules/hertz-donut/', 'vat_included': False} 2026-07-31 09:34:15 [scrapy.core.scraper] DEBUG: Scraped from <200 https://postmodular.co.uk/modules/graphic-sequencer/> {'batch_id': '2532', 'currency_code': 'GBP', 'html': None, 'image_url': 'https://postmodular.co.uk/wp-content/uploads/graphicsequencer.jpg', 'is_used': False, 'name': 'GRAPHIC SEQUENCER', 'page_metadata': None, 'price': '255', 'ships_from_region': 'GB', 'stock_status': 0, 'store_code': 'post', 'url': 'https://postmodular.co.uk/modules/graphic-sequencer/', 'vat_included': False} 2026-07-31 09:34:15 [scrapy.core.engine] INFO: Closing spider (closespider_timeout) 2026-07-31 09:34:15 [scrapy.core.scraper] DEBUG: Scraped from <200 https://postmodular.co.uk/modules/hexvca/> {'batch_id': '2532', 'currency_code': 'GBP', 'html': None, 'image_url': 'https://postmodular.co.uk/wp-content/uploads/hexvcas.jpg', 'is_used': False, 'name': 'HexVCA – discontinued', 'page_metadata': None, 'price': '240', 'ships_from_region': 'GB', 'stock_status': 0, 'store_code': 'post', 'url': 'https://postmodular.co.uk/modules/hexvca/', 'vat_included': False} 2026-07-31 09:34:33 [scrapy.extensions.logstats] INFO: Crawled 12 pages (at 0 pages/min), scraped 8 items (at 4 items/min) 2026-07-31 09:34:41 [urllib3.connectionpool] DEBUG: Starting new HTTPS connection (1): wigglehunt.com:443 2026-07-31 09:36:18 [py.warnings] WARNING: /code/lib/python3.10/site-packages/urllib3/connectionpool.py:1045: InsecureRequestWarning: Unverified HTTPS request is being made to host 'wigglehunt.com'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings warnings.warn( 2026-07-31 09:36:24 [scrapy.core.engine] ERROR: Scraper close failure Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/task.py", line 526, in _oneWorkUnit result = next(self._iterator) StopIteration During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/code/lib/python3.10/site-packages/urllib3/connectionpool.py", line 703, in urlopen httplib_response = self._make_request( File "/code/lib/python3.10/site-packages/urllib3/connectionpool.py", line 398, in _make_request conn.request(method, url, **httplib_request_kw) File "/code/lib/python3.10/site-packages/urllib3/connection.py", line 244, in request super(HTTPConnection, self).request(method, url, body=body, headers=headers) File "/usr/local/lib/python3.10/http/client.py", line 1283, in request self._send_request(method, url, body, headers, encode_chunked) File "/usr/local/lib/python3.10/http/client.py", line 1329, in _send_request self.endheaders(body, encode_chunked=encode_chunked) File "/usr/local/lib/python3.10/http/client.py", line 1278, in endheaders self._send_output(message_body, encode_chunked=encode_chunked) File "/usr/local/lib/python3.10/http/client.py", line 1038, in _send_output self.send(msg) File "/usr/local/lib/python3.10/http/client.py", line 999, in send self.sock.sendall(data) File "/usr/local/lib/python3.10/ssl.py", line 1270, in sendall v = self.send(byte_view[count:]) File "/usr/local/lib/python3.10/ssl.py", line 1239, in send return self._sslobj.write(data) ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:2426) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/code/lib/python3.10/site-packages/requests/adapters.py", line 489, in send resp = conn.urlopen( File "/code/lib/python3.10/site-packages/urllib3/connectionpool.py", line 787, in urlopen retries = retries.increment( File "/code/lib/python3.10/site-packages/urllib3/util/retry.py", line 592, in increment raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='wigglehunt.com', port=443): Max retries exceeded with url: /api/v1/_ingest-complete?store_code=post&batch_id=2532 (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:2426)'))) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/pipelines.py", line 46, in close_spider requests.get( File "/code/lib/python3.10/site-packages/requests/api.py", line 73, in get return request("get", url, params=params, **kwargs) File "/code/lib/python3.10/site-packages/requests/api.py", line 59, in request return session.request(method=method, url=url, **kwargs) File "/code/lib/python3.10/site-packages/requests/sessions.py", line 587, in request resp = self.send(prep, **send_kwargs) File "/code/lib/python3.10/site-packages/requests/sessions.py", line 701, in send r = adapter.send(request, **kwargs) File "/code/lib/python3.10/site-packages/requests/adapters.py", line 563, in send raise SSLError(e, request=request) requests.exceptions.SSLError: HTTPSConnectionPool(host='wigglehunt.com', port=443): Max retries exceeded with url: /api/v1/_ingest-complete?store_code=post&batch_id=2532 (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:2426)'))) 2026-07-31 09:36:30 [scrapy.statscollectors] INFO: Dumping Scrapy stats: {'downloader/exception_count': 12, 'downloader/exception_type_count/twisted.internet.error.TimeoutError': 8, 'downloader/exception_type_count/twisted.web._newclient.ResponseNeverReceived': 4, 'downloader/request_bytes': 9038, 'downloader/request_count': 24, 'downloader/request_method_count/GET': 24, 'downloader/response_bytes': 466556, 'downloader/response_count': 12, 'downloader/response_status_count/200': 12, 'elapsed_time_seconds': 3777.286002, 'finish_reason': 'closespider_timeout', 'finish_time': datetime.datetime(2026, 7, 31, 9, 36, 27, 122502), 'httpcompression/response_bytes': 2144242, 'httpcompression/response_count': 12, 'item_scraped_count': 8, 'log_count/DEBUG': 34, 'log_count/ERROR': 2, 'log_count/INFO': 18, 'log_count/WARNING': 2, 'memusage/max': 95268864, 'memusage/startup': 59043840, 'request_depth_max': 2, 'response_received_count': 12, 'retry/count': 12, 'retry/reason_count/twisted.internet.error.TimeoutError': 8, 'retry/reason_count/twisted.web._newclient.ResponseNeverReceived': 4, 'robotstxt/request_count': 1, 'robotstxt/response_count': 1, 'robotstxt/response_status_count/200': 1, 'scheduler/dequeued': 23, 'scheduler/dequeued/memory': 23, 'scheduler/enqueued': 1015, 'scheduler/enqueued/memory': 1015, 'start_time': datetime.datetime(2026, 7, 31, 8, 33, 29, 836500)} 2026-07-31 09:36:31 [scrapy.core.engine] INFO: Spider closed (closespider_timeout)