• It's recommended to check out the latest log via: the Stats page >> View log >> Tail

PROJECT (event_scrapers), SPIDER (norwalk_pl)

2026-06-16 12:41:13 [scrapy.utils.log] INFO: Scrapy 2.14.1 started (bot: event_scrapers)
2026-06-16 12:41:13 [scrapy.utils.log] INFO: Versions:
{'lxml': '6.0.2',
 'libxml2': '2.14.6',
 'cssselect': '1.3.0',
 'parsel': '1.10.0',
 'w3lib': '2.0.0',
 'Twisted': '25.5.0',
 'Python': '3.12.3 (main, Mar 23 2026, 19:04:32) [GCC 13.3.0]',
 'pyOpenSSL': '25.3.0 (OpenSSL 3.5.4 30 Sep 2025)',
 'cryptography': '46.0.3',
 'Platform': 'Linux-6.8.0-90-generic-x86_64-with-glibc2.39'}
2026-06-16 12:41:13 [scrapy.crawler] DEBUG: Using AsyncCrawlerProcess
2026-06-16 12:41:13 [asyncio] DEBUG: Using selector: EpollSelector
2026-06-16 12:41:13 [scrapy.addons] INFO: Enabled addons:
[]
2026-06-16 12:41:14 [scrapy.utils.log] DEBUG: Using reactor: twisted.internet.asyncioreactor.AsyncioSelectorReactor
2026-06-16 12:41:14 [scrapy.utils.log] DEBUG: Using asyncio event loop: asyncio.unix_events._UnixSelectorEventLoop
2026-06-16 12:41:14 [scrapy.extensions.telnet] INFO: Telnet Password: 40c7ee29594096ea
2026-06-16 12:41:14 [scrapy.middleware] INFO: Enabled extensions:
['scrapy.extensions.corestats.CoreStats',
 'scrapy.extensions.logcount.LogCount',
 'scrapy.extensions.telnet.TelnetConsole',
 'scrapy.extensions.memusage.MemoryUsage',
 'scrapy.extensions.feedexport.FeedExporter',
 'scrapy.extensions.logstats.LogStats']
2026-06-16 12:41:14 [scrapy.crawler] INFO: Overridden settings:
{'BOT_NAME': 'event_scrapers',
 'FEED_EXPORT_ENCODING': 'utf-8',
 'FEED_URI_PARAMS': <function _feed_uri_params at 0x772aeb9f0400>,
 'LOG_FILE': '/root/event-list-scraping/logs/event_scrapers/norwalk_pl/e220b324696f11f1be8c0050565fa5d9.log',
 'NEWSPIDER_MODULE': 'event_scrapers.spiders',
 'REQUEST_FINGERPRINTER_CLASS': 'scrapy_zyte_api.ScrapyZyteAPIRequestFingerprinter',
 'SPIDER_MODULES': ['event_scrapers.spiders']}
2026-06-16 12:41:14 [scrapy_zyte_api.handler] INFO: Using a Zyte API key starting with 'ff9baec'
2026-06-16 12:41:14 [scrapy_zyte_api.handler] INFO: Using a Zyte API key starting with 'ff9baec'
2026-06-16 12:41:14 [scrapy.middleware] INFO: Enabled downloader middlewares:
['scrapy.downloadermiddlewares.offsite.OffsiteMiddleware',
 '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_zyte_api.ScrapyZyteAPIDownloaderMiddleware',
 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware',
 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware',
 'scrapy.downloadermiddlewares.stats.DownloaderStats']
2026-06-16 12:41:14 [scrapy.middleware] INFO: Enabled spider middlewares:
['scrapy.spidermiddlewares.start.StartSpiderMiddleware',
 'scrapy.spidermiddlewares.httperror.HttpErrorMiddleware',
 'scrapy_zyte_api.ScrapyZyteAPISpiderMiddleware',
 'scrapy.spidermiddlewares.referer.RefererMiddleware',
 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware',
 'scrapy.spidermiddlewares.depth.DepthMiddleware',
 'scrapy_zyte_api.ScrapyZyteAPIRefererSpiderMiddleware']
2026-06-16 12:41:14 [scrapy.middleware] INFO: Enabled item pipelines:
['event_scrapers.pipelines.EventScrapersPipeline']
2026-06-16 12:41:14 [py.warnings] WARNING: /root/.venv/lib/python3.12/site-packages/scrapy/pipelines/__init__.py:47: ScrapyDeprecationWarning: EventScrapersPipeline.process_item() requires a spider argument, this is deprecated and the argument will not be passed in future Scrapy versions. If you need to access the spider instance you can save the crawler instance passed to from_crawler() and use its spider attribute.
  self._check_mw_method_spider_arg(pipe.process_item)

2026-06-16 12:41:14 [scrapy.core.engine] INFO: Spider opened
2026-06-16 12:41:14 [py.warnings] WARNING: /root/.venv/lib/python3.12/site-packages/scrapy/core/spidermw.py:490: ScrapyDeprecationWarning: event_scrapers.spiders.norwalk_pl.MocaWestSpider defines the deprecated start_requests() method. start_requests() has been deprecated in favor of a new method, start(), to support asynchronous code execution. start_requests() will stop being called in a future version of Scrapy. If you use Scrapy 2.13 or higher only, replace start_requests() with start(); note that start() is a coroutine (async def). If you need to maintain compatibility with lower Scrapy versions, when overriding start_requests() in a spider class, override start() as well; you can use super() to reuse the inherited start() implementation without copy-pasting. See the release notes of Scrapy 2.13 for details: https://docs.scrapy.org/en/2.13/news.html
  warn(

2026-06-16 12:41:14 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2026-06-16 12:41:14 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6023
2026-06-16 12:42:14 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2026-06-16 12:43:14 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2026-06-16 12:43:29 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://norwalkpl.org/calendar.aspx?month=8&year=2026&CID=25&Keywords=&startDate=&enddate=&> (failed 1 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:43:29 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://norwalkpl.org/calendar.aspx?month=7&year=2026&CID=23&Keywords=&startDate=&enddate=&> (failed 1 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:43:29 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://norwalkpl.org/calendar.aspx?month=8&year=2026&CID=14&Keywords=&startDate=&enddate=&> (failed 1 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:43:29 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://norwalkpl.org/calendar.aspx?month=7&year=2026&CID=14&Keywords=&startDate=&enddate=&> (failed 1 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:43:29 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://norwalkpl.org/calendar.aspx?month=6&year=2026&CID=25&Keywords=&startDate=&enddate=&> (failed 1 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:43:29 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://norwalkpl.org/calendar.aspx?month=7&year=2026&CID=25&Keywords=&startDate=&enddate=&> (failed 1 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:43:29 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://norwalkpl.org/calendar.aspx?month=6&year=2026&CID=23&Keywords=&startDate=&enddate=&> (failed 1 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:43:29 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://norwalkpl.org/calendar.aspx?month=6&year=2026&CID=14&Keywords=&startDate=&enddate=&> (failed 1 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:44:14 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2026-06-16 12:45:14 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2026-06-16 12:45:44 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://norwalkpl.org/calendar.aspx?month=6&year=2026&CID=14&Keywords=&startDate=&enddate=&> (failed 2 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:45:44 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://norwalkpl.org/calendar.aspx?month=6&year=2026&CID=23&Keywords=&startDate=&enddate=&> (failed 2 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:45:44 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://norwalkpl.org/calendar.aspx?month=7&year=2026&CID=25&Keywords=&startDate=&enddate=&> (failed 2 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:45:44 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://norwalkpl.org/calendar.aspx?month=6&year=2026&CID=25&Keywords=&startDate=&enddate=&> (failed 2 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:45:44 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://norwalkpl.org/calendar.aspx?month=7&year=2026&CID=14&Keywords=&startDate=&enddate=&> (failed 2 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:45:44 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://norwalkpl.org/calendar.aspx?month=8&year=2026&CID=14&Keywords=&startDate=&enddate=&> (failed 2 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:45:44 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://norwalkpl.org/calendar.aspx?month=7&year=2026&CID=23&Keywords=&startDate=&enddate=&> (failed 2 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:45:44 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://norwalkpl.org/calendar.aspx?month=8&year=2026&CID=25&Keywords=&startDate=&enddate=&> (failed 2 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:45:44 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://norwalkpl.org/calendar.aspx?month=8&year=2026&CID=24&Keywords=&startDate=&enddate=&> (failed 1 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:45:44 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://norwalkpl.org/calendar.aspx?month=7&year=2026&CID=24&Keywords=&startDate=&enddate=&> (failed 1 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:45:44 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://norwalkpl.org/calendar.aspx?month=6&year=2026&CID=24&Keywords=&startDate=&enddate=&> (failed 1 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:45:44 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://norwalkpl.org/calendar.aspx?month=8&year=2026&CID=23&Keywords=&startDate=&enddate=&> (failed 1 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:46:14 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2026-06-16 12:47:14 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2026-06-16 12:47:59 [scrapy.downloadermiddlewares.retry] ERROR: Gave up retrying <GET https://norwalkpl.org/calendar.aspx?month=8&year=2026&CID=25&Keywords=&startDate=&enddate=&> (failed 3 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:47:59 [scrapy.downloadermiddlewares.retry] ERROR: Gave up retrying <GET https://norwalkpl.org/calendar.aspx?month=7&year=2026&CID=23&Keywords=&startDate=&enddate=&> (failed 3 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:47:59 [scrapy.downloadermiddlewares.retry] ERROR: Gave up retrying <GET https://norwalkpl.org/calendar.aspx?month=8&year=2026&CID=14&Keywords=&startDate=&enddate=&> (failed 3 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:47:59 [scrapy.downloadermiddlewares.retry] ERROR: Gave up retrying <GET https://norwalkpl.org/calendar.aspx?month=7&year=2026&CID=14&Keywords=&startDate=&enddate=&> (failed 3 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:47:59 [scrapy.downloadermiddlewares.retry] ERROR: Gave up retrying <GET https://norwalkpl.org/calendar.aspx?month=6&year=2026&CID=25&Keywords=&startDate=&enddate=&> (failed 3 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:47:59 [scrapy.downloadermiddlewares.retry] ERROR: Gave up retrying <GET https://norwalkpl.org/calendar.aspx?month=7&year=2026&CID=25&Keywords=&startDate=&enddate=&> (failed 3 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:47:59 [scrapy.downloadermiddlewares.retry] ERROR: Gave up retrying <GET https://norwalkpl.org/calendar.aspx?month=6&year=2026&CID=23&Keywords=&startDate=&enddate=&> (failed 3 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:47:59 [scrapy.downloadermiddlewares.retry] ERROR: Gave up retrying <GET https://norwalkpl.org/calendar.aspx?month=6&year=2026&CID=14&Keywords=&startDate=&enddate=&> (failed 3 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:47:59 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://norwalkpl.org/calendar.aspx?month=8&year=2026&CID=23&Keywords=&startDate=&enddate=&> (failed 2 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:47:59 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://norwalkpl.org/calendar.aspx?month=6&year=2026&CID=24&Keywords=&startDate=&enddate=&> (failed 2 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:47:59 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://norwalkpl.org/calendar.aspx?month=7&year=2026&CID=24&Keywords=&startDate=&enddate=&> (failed 2 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:47:59 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://norwalkpl.org/calendar.aspx?month=8&year=2026&CID=24&Keywords=&startDate=&enddate=&> (failed 2 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:47:59 [scrapy.core.scraper] ERROR: Error downloading <GET https://norwalkpl.org/calendar.aspx?month=8&year=2026&CID=25&Keywords=&startDate=&enddate=&>
Traceback (most recent call last):
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1853, in _inlineCallbacks
    result = context.run(
             ^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/python/failure.py", line 467, in throwExceptionIntoGenerator
    return g.throw(self.value.with_traceback(self.tb))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/engine.py", line 490, in _download
    result = yield self.downloader.fetch(request)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1853, in _inlineCallbacks
    result = context.run(
             ^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/python/failure.py", line 467, in throwExceptionIntoGenerator
    return g.throw(self.value.with_traceback(self.tb))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 144, in fetch
    yield deferred_from_coro(
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1257, in adapt
    extracted: _SelfResultT | Failure = result.result()
                                        ^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 158, in download_async
    result = await process_exception(ex)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 150, in process_exception
    raise exception
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 153, in download_async
    result: Response | Request = await process_request(request)
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 97, in process_request
    return await download_func(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 202, in _enqueue_request
    return await maybe_deferred_to_future(d)  # fired in _wait_for_download()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 269, in _wait_for_download
    response = await self._download(slot, request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 239, in _download
    response: Response = await self.handlers.download_request_async(request)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/handlers/__init__.py", line 156, in download_request_async
    return await handler.download_request(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy_zyte_api/handler.py", line 224, in download_request
    return await self._fallback_handler.download_request(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/handlers/http11.py", line 113, in download_request
    return await maybe_deferred_to_future(agent.download_request(request))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
twisted.internet.error.TCPTimedOutError: TCP connection timed out: 110: Connection timed out.
2026-06-16 12:47:59 [scrapy.core.scraper] ERROR: Error downloading <GET https://norwalkpl.org/calendar.aspx?month=7&year=2026&CID=23&Keywords=&startDate=&enddate=&>
Traceback (most recent call last):
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1853, in _inlineCallbacks
    result = context.run(
             ^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/python/failure.py", line 467, in throwExceptionIntoGenerator
    return g.throw(self.value.with_traceback(self.tb))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/engine.py", line 490, in _download
    result = yield self.downloader.fetch(request)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1853, in _inlineCallbacks
    result = context.run(
             ^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/python/failure.py", line 467, in throwExceptionIntoGenerator
    return g.throw(self.value.with_traceback(self.tb))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 144, in fetch
    yield deferred_from_coro(
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1257, in adapt
    extracted: _SelfResultT | Failure = result.result()
                                        ^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 158, in download_async
    result = await process_exception(ex)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 150, in process_exception
    raise exception
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 153, in download_async
    result: Response | Request = await process_request(request)
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 97, in process_request
    return await download_func(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 202, in _enqueue_request
    return await maybe_deferred_to_future(d)  # fired in _wait_for_download()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 269, in _wait_for_download
    response = await self._download(slot, request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 239, in _download
    response: Response = await self.handlers.download_request_async(request)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/handlers/__init__.py", line 156, in download_request_async
    return await handler.download_request(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy_zyte_api/handler.py", line 224, in download_request
    return await self._fallback_handler.download_request(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/handlers/http11.py", line 113, in download_request
    return await maybe_deferred_to_future(agent.download_request(request))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
twisted.internet.error.TCPTimedOutError: TCP connection timed out: 110: Connection timed out.
2026-06-16 12:47:59 [scrapy.core.scraper] ERROR: Error downloading <GET https://norwalkpl.org/calendar.aspx?month=8&year=2026&CID=14&Keywords=&startDate=&enddate=&>
Traceback (most recent call last):
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1853, in _inlineCallbacks
    result = context.run(
             ^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/python/failure.py", line 467, in throwExceptionIntoGenerator
    return g.throw(self.value.with_traceback(self.tb))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/engine.py", line 490, in _download
    result = yield self.downloader.fetch(request)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1853, in _inlineCallbacks
    result = context.run(
             ^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/python/failure.py", line 467, in throwExceptionIntoGenerator
    return g.throw(self.value.with_traceback(self.tb))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 144, in fetch
    yield deferred_from_coro(
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1257, in adapt
    extracted: _SelfResultT | Failure = result.result()
                                        ^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 158, in download_async
    result = await process_exception(ex)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 150, in process_exception
    raise exception
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 153, in download_async
    result: Response | Request = await process_request(request)
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 97, in process_request
    return await download_func(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 202, in _enqueue_request
    return await maybe_deferred_to_future(d)  # fired in _wait_for_download()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 269, in _wait_for_download
    response = await self._download(slot, request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 239, in _download
    response: Response = await self.handlers.download_request_async(request)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/handlers/__init__.py", line 156, in download_request_async
    return await handler.download_request(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy_zyte_api/handler.py", line 224, in download_request
    return await self._fallback_handler.download_request(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/handlers/http11.py", line 113, in download_request
    return await maybe_deferred_to_future(agent.download_request(request))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
twisted.internet.error.TCPTimedOutError: TCP connection timed out: 110: Connection timed out.
2026-06-16 12:47:59 [scrapy.core.scraper] ERROR: Error downloading <GET https://norwalkpl.org/calendar.aspx?month=7&year=2026&CID=14&Keywords=&startDate=&enddate=&>
Traceback (most recent call last):
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1853, in _inlineCallbacks
    result = context.run(
             ^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/python/failure.py", line 467, in throwExceptionIntoGenerator
    return g.throw(self.value.with_traceback(self.tb))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/engine.py", line 490, in _download
    result = yield self.downloader.fetch(request)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1853, in _inlineCallbacks
    result = context.run(
             ^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/python/failure.py", line 467, in throwExceptionIntoGenerator
    return g.throw(self.value.with_traceback(self.tb))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 144, in fetch
    yield deferred_from_coro(
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1257, in adapt
    extracted: _SelfResultT | Failure = result.result()
                                        ^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 158, in download_async
    result = await process_exception(ex)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 150, in process_exception
    raise exception
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 153, in download_async
    result: Response | Request = await process_request(request)
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 97, in process_request
    return await download_func(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 202, in _enqueue_request
    return await maybe_deferred_to_future(d)  # fired in _wait_for_download()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 269, in _wait_for_download
    response = await self._download(slot, request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 239, in _download
    response: Response = await self.handlers.download_request_async(request)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/handlers/__init__.py", line 156, in download_request_async
    return await handler.download_request(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy_zyte_api/handler.py", line 224, in download_request
    return await self._fallback_handler.download_request(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/handlers/http11.py", line 113, in download_request
    return await maybe_deferred_to_future(agent.download_request(request))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
twisted.internet.error.TCPTimedOutError: TCP connection timed out: 110: Connection timed out.
2026-06-16 12:47:59 [scrapy.core.scraper] ERROR: Error downloading <GET https://norwalkpl.org/calendar.aspx?month=6&year=2026&CID=25&Keywords=&startDate=&enddate=&>
Traceback (most recent call last):
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1853, in _inlineCallbacks
    result = context.run(
             ^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/python/failure.py", line 467, in throwExceptionIntoGenerator
    return g.throw(self.value.with_traceback(self.tb))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/engine.py", line 490, in _download
    result = yield self.downloader.fetch(request)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1853, in _inlineCallbacks
    result = context.run(
             ^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/python/failure.py", line 467, in throwExceptionIntoGenerator
    return g.throw(self.value.with_traceback(self.tb))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 144, in fetch
    yield deferred_from_coro(
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1257, in adapt
    extracted: _SelfResultT | Failure = result.result()
                                        ^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 158, in download_async
    result = await process_exception(ex)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 150, in process_exception
    raise exception
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 153, in download_async
    result: Response | Request = await process_request(request)
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 97, in process_request
    return await download_func(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 202, in _enqueue_request
    return await maybe_deferred_to_future(d)  # fired in _wait_for_download()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 269, in _wait_for_download
    response = await self._download(slot, request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 239, in _download
    response: Response = await self.handlers.download_request_async(request)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/handlers/__init__.py", line 156, in download_request_async
    return await handler.download_request(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy_zyte_api/handler.py", line 224, in download_request
    return await self._fallback_handler.download_request(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/handlers/http11.py", line 113, in download_request
    return await maybe_deferred_to_future(agent.download_request(request))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
twisted.internet.error.TCPTimedOutError: TCP connection timed out: 110: Connection timed out.
2026-06-16 12:47:59 [scrapy.core.scraper] ERROR: Error downloading <GET https://norwalkpl.org/calendar.aspx?month=7&year=2026&CID=25&Keywords=&startDate=&enddate=&>
Traceback (most recent call last):
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1853, in _inlineCallbacks
    result = context.run(
             ^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/python/failure.py", line 467, in throwExceptionIntoGenerator
    return g.throw(self.value.with_traceback(self.tb))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/engine.py", line 490, in _download
    result = yield self.downloader.fetch(request)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1853, in _inlineCallbacks
    result = context.run(
             ^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/python/failure.py", line 467, in throwExceptionIntoGenerator
    return g.throw(self.value.with_traceback(self.tb))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 144, in fetch
    yield deferred_from_coro(
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1257, in adapt
    extracted: _SelfResultT | Failure = result.result()
                                        ^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 158, in download_async
    result = await process_exception(ex)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 150, in process_exception
    raise exception
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 153, in download_async
    result: Response | Request = await process_request(request)
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 97, in process_request
    return await download_func(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 202, in _enqueue_request
    return await maybe_deferred_to_future(d)  # fired in _wait_for_download()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 269, in _wait_for_download
    response = await self._download(slot, request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 239, in _download
    response: Response = await self.handlers.download_request_async(request)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/handlers/__init__.py", line 156, in download_request_async
    return await handler.download_request(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy_zyte_api/handler.py", line 224, in download_request
    return await self._fallback_handler.download_request(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/handlers/http11.py", line 113, in download_request
    return await maybe_deferred_to_future(agent.download_request(request))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
twisted.internet.error.TCPTimedOutError: TCP connection timed out: 110: Connection timed out.
2026-06-16 12:47:59 [scrapy.core.scraper] ERROR: Error downloading <GET https://norwalkpl.org/calendar.aspx?month=6&year=2026&CID=23&Keywords=&startDate=&enddate=&>
Traceback (most recent call last):
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1853, in _inlineCallbacks
    result = context.run(
             ^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/python/failure.py", line 467, in throwExceptionIntoGenerator
    return g.throw(self.value.with_traceback(self.tb))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/engine.py", line 490, in _download
    result = yield self.downloader.fetch(request)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1853, in _inlineCallbacks
    result = context.run(
             ^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/python/failure.py", line 467, in throwExceptionIntoGenerator
    return g.throw(self.value.with_traceback(self.tb))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 144, in fetch
    yield deferred_from_coro(
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1257, in adapt
    extracted: _SelfResultT | Failure = result.result()
                                        ^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 158, in download_async
    result = await process_exception(ex)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 150, in process_exception
    raise exception
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 153, in download_async
    result: Response | Request = await process_request(request)
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 97, in process_request
    return await download_func(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 202, in _enqueue_request
    return await maybe_deferred_to_future(d)  # fired in _wait_for_download()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 269, in _wait_for_download
    response = await self._download(slot, request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 239, in _download
    response: Response = await self.handlers.download_request_async(request)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/handlers/__init__.py", line 156, in download_request_async
    return await handler.download_request(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy_zyte_api/handler.py", line 224, in download_request
    return await self._fallback_handler.download_request(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/handlers/http11.py", line 113, in download_request
    return await maybe_deferred_to_future(agent.download_request(request))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
twisted.internet.error.TCPTimedOutError: TCP connection timed out: 110: Connection timed out.
2026-06-16 12:47:59 [scrapy.core.scraper] ERROR: Error downloading <GET https://norwalkpl.org/calendar.aspx?month=6&year=2026&CID=14&Keywords=&startDate=&enddate=&>
Traceback (most recent call last):
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1853, in _inlineCallbacks
    result = context.run(
             ^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/python/failure.py", line 467, in throwExceptionIntoGenerator
    return g.throw(self.value.with_traceback(self.tb))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/engine.py", line 490, in _download
    result = yield self.downloader.fetch(request)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1853, in _inlineCallbacks
    result = context.run(
             ^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/python/failure.py", line 467, in throwExceptionIntoGenerator
    return g.throw(self.value.with_traceback(self.tb))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 144, in fetch
    yield deferred_from_coro(
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1257, in adapt
    extracted: _SelfResultT | Failure = result.result()
                                        ^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 158, in download_async
    result = await process_exception(ex)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 150, in process_exception
    raise exception
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 153, in download_async
    result: Response | Request = await process_request(request)
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 97, in process_request
    return await download_func(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 202, in _enqueue_request
    return await maybe_deferred_to_future(d)  # fired in _wait_for_download()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 269, in _wait_for_download
    response = await self._download(slot, request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 239, in _download
    response: Response = await self.handlers.download_request_async(request)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/handlers/__init__.py", line 156, in download_request_async
    return await handler.download_request(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy_zyte_api/handler.py", line 224, in download_request
    return await self._fallback_handler.download_request(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/handlers/http11.py", line 113, in download_request
    return await maybe_deferred_to_future(agent.download_request(request))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
twisted.internet.error.TCPTimedOutError: TCP connection timed out: 110: Connection timed out.
2026-06-16 12:48:14 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2026-06-16 12:49:14 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2026-06-16 12:50:14 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2026-06-16 12:50:14 [scrapy.downloadermiddlewares.retry] ERROR: Gave up retrying <GET https://norwalkpl.org/calendar.aspx?month=8&year=2026&CID=24&Keywords=&startDate=&enddate=&> (failed 3 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:50:14 [scrapy.downloadermiddlewares.retry] ERROR: Gave up retrying <GET https://norwalkpl.org/calendar.aspx?month=7&year=2026&CID=24&Keywords=&startDate=&enddate=&> (failed 3 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:50:14 [scrapy.downloadermiddlewares.retry] ERROR: Gave up retrying <GET https://norwalkpl.org/calendar.aspx?month=6&year=2026&CID=24&Keywords=&startDate=&enddate=&> (failed 3 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:50:14 [scrapy.downloadermiddlewares.retry] ERROR: Gave up retrying <GET https://norwalkpl.org/calendar.aspx?month=8&year=2026&CID=23&Keywords=&startDate=&enddate=&> (failed 3 times): TCP connection timed out: 110: Connection timed out.
2026-06-16 12:50:14 [scrapy.core.scraper] ERROR: Error downloading <GET https://norwalkpl.org/calendar.aspx?month=8&year=2026&CID=24&Keywords=&startDate=&enddate=&>
Traceback (most recent call last):
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1853, in _inlineCallbacks
    result = context.run(
             ^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/python/failure.py", line 467, in throwExceptionIntoGenerator
    return g.throw(self.value.with_traceback(self.tb))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/engine.py", line 490, in _download
    result = yield self.downloader.fetch(request)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1853, in _inlineCallbacks
    result = context.run(
             ^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/python/failure.py", line 467, in throwExceptionIntoGenerator
    return g.throw(self.value.with_traceback(self.tb))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 144, in fetch
    yield deferred_from_coro(
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1257, in adapt
    extracted: _SelfResultT | Failure = result.result()
                                        ^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 158, in download_async
    result = await process_exception(ex)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 150, in process_exception
    raise exception
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 153, in download_async
    result: Response | Request = await process_request(request)
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 97, in process_request
    return await download_func(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 202, in _enqueue_request
    return await maybe_deferred_to_future(d)  # fired in _wait_for_download()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 269, in _wait_for_download
    response = await self._download(slot, request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 239, in _download
    response: Response = await self.handlers.download_request_async(request)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/handlers/__init__.py", line 156, in download_request_async
    return await handler.download_request(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy_zyte_api/handler.py", line 224, in download_request
    return await self._fallback_handler.download_request(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/handlers/http11.py", line 113, in download_request
    return await maybe_deferred_to_future(agent.download_request(request))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
twisted.internet.error.TCPTimedOutError: TCP connection timed out: 110: Connection timed out.
2026-06-16 12:50:14 [scrapy.core.scraper] ERROR: Error downloading <GET https://norwalkpl.org/calendar.aspx?month=7&year=2026&CID=24&Keywords=&startDate=&enddate=&>
Traceback (most recent call last):
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1853, in _inlineCallbacks
    result = context.run(
             ^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/python/failure.py", line 467, in throwExceptionIntoGenerator
    return g.throw(self.value.with_traceback(self.tb))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/engine.py", line 490, in _download
    result = yield self.downloader.fetch(request)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1853, in _inlineCallbacks
    result = context.run(
             ^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/python/failure.py", line 467, in throwExceptionIntoGenerator
    return g.throw(self.value.with_traceback(self.tb))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 144, in fetch
    yield deferred_from_coro(
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1257, in adapt
    extracted: _SelfResultT | Failure = result.result()
                                        ^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 158, in download_async
    result = await process_exception(ex)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 150, in process_exception
    raise exception
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 153, in download_async
    result: Response | Request = await process_request(request)
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 97, in process_request
    return await download_func(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 202, in _enqueue_request
    return await maybe_deferred_to_future(d)  # fired in _wait_for_download()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 269, in _wait_for_download
    response = await self._download(slot, request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 239, in _download
    response: Response = await self.handlers.download_request_async(request)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/handlers/__init__.py", line 156, in download_request_async
    return await handler.download_request(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy_zyte_api/handler.py", line 224, in download_request
    return await self._fallback_handler.download_request(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/handlers/http11.py", line 113, in download_request
    return await maybe_deferred_to_future(agent.download_request(request))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
twisted.internet.error.TCPTimedOutError: TCP connection timed out: 110: Connection timed out.
2026-06-16 12:50:14 [scrapy.core.scraper] ERROR: Error downloading <GET https://norwalkpl.org/calendar.aspx?month=6&year=2026&CID=24&Keywords=&startDate=&enddate=&>
Traceback (most recent call last):
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1853, in _inlineCallbacks
    result = context.run(
             ^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/python/failure.py", line 467, in throwExceptionIntoGenerator
    return g.throw(self.value.with_traceback(self.tb))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/engine.py", line 490, in _download
    result = yield self.downloader.fetch(request)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1853, in _inlineCallbacks
    result = context.run(
             ^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/python/failure.py", line 467, in throwExceptionIntoGenerator
    return g.throw(self.value.with_traceback(self.tb))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 144, in fetch
    yield deferred_from_coro(
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1257, in adapt
    extracted: _SelfResultT | Failure = result.result()
                                        ^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 158, in download_async
    result = await process_exception(ex)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 150, in process_exception
    raise exception
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 153, in download_async
    result: Response | Request = await process_request(request)
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 97, in process_request
    return await download_func(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 202, in _enqueue_request
    return await maybe_deferred_to_future(d)  # fired in _wait_for_download()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 269, in _wait_for_download
    response = await self._download(slot, request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 239, in _download
    response: Response = await self.handlers.download_request_async(request)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/handlers/__init__.py", line 156, in download_request_async
    return await handler.download_request(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy_zyte_api/handler.py", line 224, in download_request
    return await self._fallback_handler.download_request(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/handlers/http11.py", line 113, in download_request
    return await maybe_deferred_to_future(agent.download_request(request))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
twisted.internet.error.TCPTimedOutError: TCP connection timed out: 110: Connection timed out.
2026-06-16 12:50:14 [scrapy.core.scraper] ERROR: Error downloading <GET https://norwalkpl.org/calendar.aspx?month=8&year=2026&CID=23&Keywords=&startDate=&enddate=&>
Traceback (most recent call last):
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1853, in _inlineCallbacks
    result = context.run(
             ^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/python/failure.py", line 467, in throwExceptionIntoGenerator
    return g.throw(self.value.with_traceback(self.tb))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/engine.py", line 490, in _download
    result = yield self.downloader.fetch(request)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1853, in _inlineCallbacks
    result = context.run(
             ^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/twisted/python/failure.py", line 467, in throwExceptionIntoGenerator
    return g.throw(self.value.with_traceback(self.tb))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 144, in fetch
    yield deferred_from_coro(
  File "/root/.venv/lib/python3.12/site-packages/twisted/internet/defer.py", line 1257, in adapt
    extracted: _SelfResultT | Failure = result.result()
                                        ^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 158, in download_async
    result = await process_exception(ex)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 150, in process_exception
    raise exception
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 153, in download_async
    result: Response | Request = await process_request(request)
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/middleware.py", line 97, in process_request
    return await download_func(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 202, in _enqueue_request
    return await maybe_deferred_to_future(d)  # fired in _wait_for_download()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 269, in _wait_for_download
    response = await self._download(slot, request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/__init__.py", line 239, in _download
    response: Response = await self.handlers.download_request_async(request)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/handlers/__init__.py", line 156, in download_request_async
    return await handler.download_request(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy_zyte_api/handler.py", line 224, in download_request
    return await self._fallback_handler.download_request(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.venv/lib/python3.12/site-packages/scrapy/core/downloader/handlers/http11.py", line 113, in download_request
    return await maybe_deferred_to_future(agent.download_request(request))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
twisted.internet.error.TCPTimedOutError: TCP connection timed out: 110: Connection timed out.
2026-06-16 12:50:14 [scrapy.core.engine] INFO: Closing spider (finished)
2026-06-16 12:50:14 [scrapy.extensions.feedexport] INFO: Stored csv feed (0 items) in: output/2026/06/16/norwalk_pl.csv
2026-06-16 12:50:14 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
{'downloader/exception_count': 36,
 'downloader/exception_type_count/twisted.internet.error.TCPTimedOutError': 36,
 'downloader/request_bytes': 32256,
 'downloader/request_count': 36,
 'downloader/request_method_count/GET': 36,
 'elapsed_time_seconds': 540.455953,
 'feedexport/success_count/FileFeedStorage': 1,
 'finish_reason': 'finished',
 'finish_time': datetime.datetime(2026, 6, 16, 10, 50, 14, 875782, tzinfo=datetime.timezone.utc),
 'items_per_minute': 0.0,
 'log_count/DEBUG': 24,
 'log_count/ERROR': 24,
 'log_count/INFO': 12,
 'memusage/max': 95526912,
 'memusage/startup': 93167616,
 'responses_per_minute': 0.0,
 'retry/count': 24,
 'retry/max_reached': 12,
 'retry/reason_count/twisted.internet.error.TCPTimedOutError': 24,
 'scheduler/dequeued': 36,
 'scheduler/dequeued/memory': 36,
 'scheduler/enqueued': 36,
 'scheduler/enqueued/memory': 36,
 'start_time': datetime.datetime(2026, 6, 16, 10, 41, 14, 419829, tzinfo=datetime.timezone.utc)}
2026-06-16 12:50:14 [scrapy.core.engine] INFO: Spider closed (finished)

PROJECT (event_scrapers), SPIDER (norwalk_pl)