2026-03-12 09:59:07 [scrapy.utils.log] INFO: Scrapy 2.14.1 started (bot: grabbers) 2026-03-12 09:59:07 [scrapy.utils.log] INFO: Versions: {'lxml': '6.0.2', 'libxml2': '2.14.6', 'cssselect': '1.4.0', 'parsel': '1.11.0', 'w3lib': '2.4.0', 'Twisted': '25.5.0', 'Python': '3.14.3 (main, Feb 4 2026, 14:18:08) [GCC 11.4.0]', 'pyOpenSSL': '25.3.0 (OpenSSL 3.5.5 27 Jan 2026)', 'cryptography': '46.0.5', 'Platform': 'Linux-6.12.66-88.122.amzn2023.x86_64-x86_64-with-glibc2.35'} 2026-03-12 09:59:07 [scrapy.addons] INFO: Enabled addons: [] 2026-03-12 09:59:08 [py.warnings] WARNING: /layers/paketo-buildpacks_pip-install/packages/lib/python3.14/site-packages/scrapy/extensions/feedexport.py:436: ScrapyDeprecationWarning: The `FEED_URI` and `FEED_FORMAT` settings have been deprecated in favor of the `FEEDS` setting. Please see the `FEEDS` setting docs for more details exporter = cls(crawler) 2026-03-12 09:59:08 [scrapy.middleware] INFO: Enabled extensions: ['scrapy.extensions.corestats.CoreStats', 'scrapy.extensions.logcount.LogCount', 'scrapy.extensions.memusage.MemoryUsage', 'scrapy.extensions.logstats.LogStats', 'grabbers.extensions.custom_fields.ExportCustomFieldsExtension', 'grabbers.extensions.kol_roles.ExportKolRolesExtension', 'grabbers.extensions.exporters.DefaultScrapedItemsExporter'] 2026-03-12 09:59:08 [scrapy.crawler] INFO: Overridden settings: {'BOT_NAME': 'grabbers', 'FEED_EXPORT_FIELDS': ['External Id', 'Parent External Id', 'Name', 'Plain text: Parent Name', 'Start date', 'Start time', 'End date', 'End time', 'Location', 'Plain text: Event Link', 'Plain text: Event Link (Excel)', 'Plain text: Description', 'Plain text: Learning Objectives', 'Plain text: Chairs', 'Plain text: Introduction', 'Plain text: Moderators', 'Plain text: Case presenters', 'Plain text: Abstract Number', 'Plain text: Video Session Number', 'Plain text: Panel', 'Plain text: Discussants', 'Plain text: Abstract Authors', 'Plain text: Abstract Institutions', 'Plain text: Speakers', 'Plain text: Coordinators', 'Plain text: Experts', 'Plain text: Surgeons', 'Plain text: Tutors', 'Plain text: Winners', 'Plain text: Interviewers', 'Plain text: Presenters', 'Plain text: Semi-live presenter', 'Plain text: Sidekicks', 'Plain text: Abstract Link', 'Plain text: Poster Link', 'Filter: Session Types', 'Filter: Subsession Types', 'Filter: Tracks', 'Filter: Program Type', 'Filter: Other Topics'], 'FEED_FORMAT': 'xlsx', 'LOG_FILE': '/etc/scrapyd/dbs/logs/grabbers/EAU/167d15061dfa11f1a1453a84db9f62c8.log', 'LOG_LEVEL': 'INFO', 'NEWSPIDER_MODULE': 'grabbers.spiders', 'SPIDER_MODULES': ['grabbers.spiders'], 'TELNETCONSOLE_ENABLED': False, 'USER_AGENT': 'Mozilla/5.0 (X11; Linux x86_64; rv:131.0) Gecko/20100101 ' 'Firefox/131.0'} 2026-03-12 09:59:08 [scrapy_fake_useragent.middleware] INFO: Using '' as the User-Agent provider 2026-03-12 09:59:08 [scrapy.middleware] INFO: Enabled downloader middlewares: ['scrapy.downloadermiddlewares.offsite.OffsiteMiddleware', 'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware', 'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware', 'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware', 'grabbers.middlewares.RandomUserAgentMiddleware', 'grabbers.middlewares.RetryUserAgentMiddleware', '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-03-12 09:59:08 [scrapy.middleware] INFO: Enabled spider middlewares: ['scrapy.spidermiddlewares.start.StartSpiderMiddleware', 'scrapy.spidermiddlewares.httperror.HttpErrorMiddleware', 'scrapy.spidermiddlewares.referer.RefererMiddleware', 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware', 'scrapy.spidermiddlewares.depth.DepthMiddleware'] 2026-03-12 09:59:09 [scrapy.middleware] INFO: Enabled item pipelines: ['grabbers.pipelines.CleanTextPipeline', 'grabbers.pipelines.DateTimeFormatPipeline', 'grabbers.pipelines.BoolFormatPipeline', 'grabbers.pipelines.ValidateEventNamePipeline', 'grabbers.pipelines.CountryCodePipeline', 'grabbers.pipelines.HyperlinkedEventLinkPipeline', 'grabbers.pipelines.ElasticSearchPipeline'] 2026-03-12 09:59:09 [scrapy.core.engine] INFO: Spider opened 2026-03-12 09:59:09 [elastic_transport.transport] INFO: HEAD https://elasticsearch-es-http.elasticsearch.svc:9200/congress-events [status:200 duration:0.120s] 2026-03-12 09:59:09 [EAU] INFO: Start reindexing existing events to historical index. 2026-03-12 09:59:09 [elastic_transport.transport] INFO: PUT https://elasticsearch-es-http.elasticsearch.svc:9200/congress-events/_settings [status:200 duration:0.043s] 2026-03-12 09:59:09 [elastic_transport.transport] INFO: DELETE https://elasticsearch-es-http.elasticsearch.svc:9200/congress-events-historical?ignore_unavailable=true [status:200 duration:0.047s] 2026-03-12 09:59:10 [elastic_transport.transport] INFO: PUT https://elasticsearch-es-http.elasticsearch.svc:9200/congress-events/_clone/congress-events-historical [status:200 duration:0.257s] 2026-03-12 09:59:10 [elastic_transport.transport] INFO: PUT https://elasticsearch-es-http.elasticsearch.svc:9200/congress-events/_settings [status:200 duration:0.035s] 2026-03-12 09:59:10 [elastic_transport.transport] INFO: PUT https://elasticsearch-es-http.elasticsearch.svc:9200/congress-events-historical/_settings [status:200 duration:0.034s] 2026-03-12 09:59:20 [elastic_transport.transport] INFO: POST https://elasticsearch-es-http.elasticsearch.svc:9200/_reindex?wait_for_completion=true [status:N/A duration:10.010s] 2026-03-12 09:59:20 [elastic_transport.node_pool] WARNING: Node has failed for 1 times in a row, putting on 1 second timeout 2026-03-12 09:59:20 [EAU] ERROR: ElasticSearch client initialization failed. Make sure ElasticSearch is running and connection settings are correct. Traceback (most recent call last): File "/layers/paketo-buildpacks_pip-install/packages/lib/python3.14/site-packages/urllib3/connectionpool.py", line 534, in _make_request response = conn.getresponse() File "/layers/paketo-buildpacks_pip-install/packages/lib/python3.14/site-packages/urllib3/connection.py", line 571, in getresponse httplib_response = super().getresponse() File "/layers/paketo-buildpacks_pip-install/packages/lib/python3.14/site-packages/sentry_sdk/integrations/stdlib.py", line 146, in getresponse rv = real_getresponse(self, *args, **kwargs) File "/layers/paketo-buildpacks_cpython/cpython/lib/python3.14/http/client.py", line 1450, in getresponse response.begin() ~~~~~~~~~~~~~~^^ File "/layers/paketo-buildpacks_cpython/cpython/lib/python3.14/http/client.py", line 336, in begin version, status, reason = self._read_status() ~~~~~~~~~~~~~~~~~^^ File "/layers/paketo-buildpacks_cpython/cpython/lib/python3.14/http/client.py", line 297, in _read_status line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1") ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ File "/layers/paketo-buildpacks_cpython/cpython/lib/python3.14/socket.py", line 725, in readinto return self._sock.recv_into(b) ~~~~~~~~~~~~~~~~~~~~^^^ File "/layers/paketo-buildpacks_cpython/cpython/lib/python3.14/ssl.py", line 1304, in recv_into return self.read(nbytes, buffer) ~~~~~~~~~^^^^^^^^^^^^^^^^ File "/layers/paketo-buildpacks_cpython/cpython/lib/python3.14/ssl.py", line 1138, in read return self._sslobj.read(len, buffer) ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^ TimeoutError: The read operation timed out The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/layers/paketo-buildpacks_pip-install/packages/lib/python3.14/site-packages/elastic_transport/_node/_http_urllib3.py", line 167, in perform_request response = self.pool.urlopen( method, ...<4 lines>... **kw, # type: ignore[arg-type] ) File "/layers/paketo-buildpacks_pip-install/packages/lib/python3.14/site-packages/urllib3/connectionpool.py", line 841, in urlopen retries = retries.increment( method, url, error=new_e, _pool=self, _stacktrace=sys.exc_info()[2] ) File "/layers/paketo-buildpacks_pip-install/packages/lib/python3.14/site-packages/urllib3/util/retry.py", line 465, in increment raise reraise(type(error), error, _stacktrace) ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/layers/paketo-buildpacks_pip-install/packages/lib/python3.14/site-packages/urllib3/util/util.py", line 39, in reraise raise value File "/layers/paketo-buildpacks_pip-install/packages/lib/python3.14/site-packages/urllib3/connectionpool.py", line 787, in urlopen response = self._make_request( conn, ...<10 lines>... **response_kw, ) File "/layers/paketo-buildpacks_pip-install/packages/lib/python3.14/site-packages/urllib3/connectionpool.py", line 536, in _make_request self._raise_timeout(err=e, url=url, timeout_value=read_timeout) ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/layers/paketo-buildpacks_pip-install/packages/lib/python3.14/site-packages/urllib3/connectionpool.py", line 367, in _raise_timeout raise ReadTimeoutError( self, url, f"Read timed out. (read timeout={timeout_value})" ) from err urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='elasticsearch-es-http.elasticsearch.svc', port=9200): Read timed out. (read timeout=9.999689533142373) The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/workspace/source/app/grabbers/pipelines/store_to_elasticsearch.py", line 72, in open_spider self._prepare_es_indexes() ~~~~~~~~~~~~~~~~~~~~~~~~^^ File "/workspace/source/app/grabbers/pipelines/store_to_elasticsearch.py", line 95, in _prepare_es_indexes self.client.reindex_event_document( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ actual_index_name=self.index_name, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ historical_index_name=self.historical_index_name, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "/workspace/source/app/grabbers/elasticsearch_client.py", line 145, in reindex_event_document self.client.reindex( ~~~~~~~~~~~~~~~~~~~^ source={"index": actual_index_name}, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ dest={"index": historical_index_name}, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ wait_for_completion=True, ^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "/layers/paketo-buildpacks_pip-install/packages/lib/python3.14/site-packages/elasticsearch/_sync/client/utils.py", line 421, in wrapped return api(*args, **kwargs) File "/layers/paketo-buildpacks_pip-install/packages/lib/python3.14/site-packages/elasticsearch/_sync/client/__init__.py", line 4027, in reindex return self.perform_request( # type: ignore[return-value] ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ "POST", ^^^^^^^ ...<5 lines>... path_parts=__path_parts, ^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "/layers/paketo-buildpacks_pip-install/packages/lib/python3.14/site-packages/elasticsearch/_sync/client/_base.py", line 271, in perform_request response = self._perform_request( method, ...<4 lines>... otel_span=otel_span, ) File "/layers/paketo-buildpacks_pip-install/packages/lib/python3.14/site-packages/elasticsearch/_sync/client/_base.py", line 315, in _perform_request meta, resp_body = self.transport.perform_request( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ method, ^^^^^^^ ...<8 lines>... otel_span=otel_span, ^^^^^^^^^^^^^^^^^^^^ ) ^ File "/layers/paketo-buildpacks_pip-install/packages/lib/python3.14/site-packages/elastic_transport/_transport.py", line 344, in perform_request resp = node.perform_request( method, ...<3 lines>... request_timeout=request_timeout, ) File "/layers/paketo-buildpacks_pip-install/packages/lib/python3.14/site-packages/elastic_transport/_node/_http_urllib3.py", line 202, in perform_request raise err from e elastic_transport.ConnectionTimeout: Connection timed out 2026-03-12 09:59:20 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min) 2026-03-12 09:59:20 [scrapy_fake_useragent.middleware] INFO: Using '' as the User-Agent provider 2026-03-12 09:59:22 [EAU] WARNING: Event has empty time field: Event Name: New ultrasound technologies in Pca detection: A contender to MRI? External ID: 145273 Field: end_time 2026-03-12 09:59:22 [EAU] WARNING: Event has empty time field: Event Name: …and what next? Perilesional biopsy is enough to undertake my surgeries? External ID: 145275 Field: end_time 2026-03-12 09:59:22 [EAU] WARNING: Event has empty time field: Event Name: The cN1 PSMA positive and CT negative External ID: 145276 Field: end_time 2026-03-12 09:59:22 [EAU] WARNING: Event has empty time field: Event Name: Oligometastatic recurrent PCa on PSMA PET External ID: 145278 Field: end_time 2026-03-12 09:59:23 [EAU] WARNING: Event has empty time field: Event Name: Should the transperitoneal route be phased out in favour of retro-/extraperitoneal when infection risk is high? External ID: 145171 Field: end_time 2026-03-12 09:59:38 [scrapy.core.engine] INFO: Closing spider (finished) 2026-03-12 09:59:38 [EAU] WARNING: Event time frame was changed to fit sub events: External id: 20241 end time was changed from 12:00 to 12:15 2026-03-12 09:59:38 [EAU] WARNING: Event time frame was changed to fit sub events: External id: 22673 end time was changed from 17:00 to 17:05 2026-03-12 09:59:39 [EAU] WARNING: Event time frame was changed to fit sub events: External id: 22662 end time was changed from 14:00 to 14:05 2026-03-12 09:59:39 [EAU] WARNING: Please, do not forget to add links to sub events with fixed times to task comments. 2026-03-12 09:59:47 [scrapy.extensions.feedexport] INFO: Stored xlsx feed (4991 items) in: s3://usummit-prod-grabbers-bucket/EAU/EAU-2203_2026-03-12_09-58-58.xlsx 2026-03-12 09:59:47 [scrapy.statscollectors] INFO: Dumping Scrapy stats: {'downloader/request_bytes': 196599, 'downloader/request_count': 446, 'downloader/request_method_count/GET': 446, 'downloader/response_bytes': 2913323, 'downloader/response_count': 446, 'downloader/response_status_count/200': 446, 'elapsed_time_seconds': 18.519602, 'feedexport/success_count/S3FeedStorage': 1, 'finish_reason': 'finished', 'finish_time': datetime.datetime(2026, 3, 12, 9, 59, 38, 706157, tzinfo=datetime.timezone.utc), 'httpcompression/response_bytes': 17869574, 'httpcompression/response_count': 446, 'item_scraped_count': 4991, 'items_per_minute': 16636.666666666668, 'log_count/INFO': 3, 'log_count/WARNING': 5, 'memusage/max': 229580800, 'memusage/startup': 229580800, 'request_depth_max': 3, 'response_received_count': 446, 'responses_per_minute': 1486.6666666666667, 'scheduler/dequeued': 446, 'scheduler/dequeued/memory': 446, 'scheduler/enqueued': 446, 'scheduler/enqueued/memory': 446, 'start_time': datetime.datetime(2026, 3, 12, 9, 59, 20, 186555, tzinfo=datetime.timezone.utc)} 2026-03-12 09:59:47 [scrapy.core.engine] INFO: Spider closed (finished)