2026-04-23 13:22:31 [scrapy.utils.log] INFO: Scrapy 2.14.2 started (bot: grabbers) 2026-04-23 13:22:31 [scrapy.utils.log] INFO: Versions: {'lxml': '6.1.0', 'libxml2': '2.14.6', 'cssselect': '1.4.0', 'parsel': '1.11.0', 'w3lib': '2.4.1', 'Twisted': '25.5.0', 'Python': '3.14.3 (main, Feb 4 2026, 14:18:08) [GCC 11.4.0]', 'pyOpenSSL': '26.0.0 (OpenSSL 3.5.6 7 Apr 2026)', 'cryptography': '46.0.7', 'Platform': 'Linux-6.12.77-99.140.amzn2023.x86_64-x86_64-with-glibc2.35'} 2026-04-23 13:22:31 [scrapy.addons] INFO: Enabled addons: [] 2026-04-23 13:22:31 [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-04-23 13:22:31 [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-04-23 13:22:31 [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: Session', 'Plain text: Description', 'Filter: Session Type', 'Filter: Free', 'Filter: Session Group', 'Filter: Topics', 'Filter: Abstract Type', 'Filter: Abstract Topics', 'Filter: Lmic Abstract', 'Filter: Assemblies', 'Filter: Audience', 'Filter: Data Provider', 'Plain text: Objectives', 'Plain text: Educational Grant Support', 'Plain text: Registration Information', 'Plain text: Poster Number', 'Plain text: Session Number', 'Plain text: Case Report', 'Plain text: Chair', 'Plain text: Facilitator', 'Plain text: Faculty', 'Plain text: Featured Speaker', 'Plain text: Late Breaking Abstract', 'Plain text: Lead Facilitator', 'Plain text: Moderator', 'Plain text: Scientific Abstract', 'Plain text: Speaker'], 'FEED_FORMAT': 'xlsx', 'LOG_FILE': '/etc/scrapyd/dbs/logs/grabbers/ATS/77b645843f1711f1a511b6bb31db07a8.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-04-23 13:22:32 [scrapy_fake_useragent.middleware] INFO: Using '' as the User-Agent provider 2026-04-23 13:22:32 [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-04-23 13:22:32 [scrapy.middleware] INFO: Enabled spider middlewares: ['scrapy.spidermiddlewares.start.StartSpiderMiddleware', 'scrapy.spidermiddlewares.httperror.HttpErrorMiddleware', 'grabbers.middlewares.SilentValidationMiddleware', 'scrapy.spidermiddlewares.referer.RefererMiddleware', 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware', 'scrapy.spidermiddlewares.depth.DepthMiddleware'] 2026-04-23 13:22:33 [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-04-23 13:22:33 [scrapy.core.engine] INFO: Spider opened 2026-04-23 13:22:33 [elastic_transport.transport] INFO: HEAD https://elasticsearch-es-http.elasticsearch.svc:9200/congress-events [status:200 duration:0.144s] 2026-04-23 13:22:33 [ATS] INFO: Start reindexing existing events to historical index. 2026-04-23 13:22:33 [elastic_transport.transport] INFO: HEAD https://elasticsearch-es-http.elasticsearch.svc:9200/congress-events-historical [status:200 duration:0.003s] 2026-04-23 13:22:37 [elastic_transport.transport] INFO: POST https://elasticsearch-es-http.elasticsearch.svc:9200/congress-events-historical/_delete_by_query [status:200 duration:3.808s] 2026-04-23 13:22:47 [elastic_transport.transport] INFO: POST https://elasticsearch-es-http.elasticsearch.svc:9200/_reindex?wait_for_completion=true [status:N/A duration:10.001s] 2026-04-23 13:22:47 [elastic_transport.node_pool] WARNING: Node has failed for 1 times in a row, putting on 1 second timeout 2026-04-23 13:22:47 [ATS] 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.999654227984138) 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 96, in _prepare_es_indexes self.client.reindex_event_document( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ congress=self.congress, ^^^^^^^^^^^^^^^^^^^^^^^ actual_index_name=self.index_name, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ historical_index_name=self.historical_index_name, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "/workspace/source/app/grabbers/elasticsearch_client.py", line 149, in reindex_event_document self.client.reindex( ~~~~~~~~~~~~~~~~~~~^ source={ ^^^^^^^^ ...<8 lines>... 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-04-23 13:22:47 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min) 2026-04-23 13:22:47 [scrapy_fake_useragent.middleware] INFO: Using '' as the User-Agent provider 2026-04-23 13:22:48 [ATS] WARNING: Cell Characters Limit Overflow. Event Name: B41 FROM CHATGPT TO CRYOBIOPSY: MODERN TOOLS AND INSIGHTS IN ILD External ID: 686c677b-8e9d-446f-b061-649371a0a19c Field: scientific_abstract 2026-04-23 13:22:57 [ATS] ERROR: Found value for unexpected field: customRef9 Event link: https://ats2026.d365.events/education/sessions/019e10fc-6b52-4f01-978e-3fc9d25dd5a1 Data: https://www.snapsight.com/live-channel/9ebc2353-0e76-403b-a4bb-e9f687540f5d/1064e96d-6465-4bdc-866c-765dd0e4a310/attendee?tab=live-text 2026-04-23 13:23:47 [scrapy.extensions.logstats] INFO: Crawled 6057 pages (at 6057 pages/min), scraped 5545 items (at 5545 items/min) 2026-04-23 13:24:31 [scrapy.core.engine] INFO: Closing spider (finished) 2026-04-23 13:24:31 [ATS] WARNING: Note that filter `Session Group` has only one choice: `CTI cApi Sessions` 2026-04-23 13:24:31 [ATS] WARNING: Note that filter `Data Provider` has only one choice: `Map Your Show` 2026-04-23 13:24:31 [ATS] WARNING: Note that filter `Lmic Abstract` has only one choice: `LMIC Abstract` 2026-04-23 13:24:47 [scrapy.extensions.feedexport] INFO: Stored xlsx feed (9893 items) in: s3://usummit-prod-grabbers-bucket/ATS/ATS-2337_2026-04-23_13-22-25.xlsx 2026-04-23 13:24:47 [scrapy.statscollectors] INFO: Dumping Scrapy stats: {'downloader/request_bytes': 18304845, 'downloader/request_count': 10506, 'downloader/request_method_count/POST': 10506, 'downloader/response_bytes': 49905047, 'downloader/response_count': 10506, 'downloader/response_status_count/200': 10506, 'elapsed_time_seconds': 104.117636, 'feedexport/success_count/S3FeedStorage': 1, 'finish_reason': 'finished', 'finish_time': datetime.datetime(2026, 4, 23, 13, 24, 31, 307396, tzinfo=datetime.timezone.utc), 'item_scraped_count': 9893, 'items_per_minute': 5707.5, 'log_count/ERROR': 1, 'log_count/INFO': 4, 'log_count/WARNING': 1, 'memusage/max': 499101696, 'memusage/startup': 236187648, 'request_depth_max': 4, 'response_received_count': 10506, 'responses_per_minute': 6061.153846153846, 'scheduler/dequeued': 10506, 'scheduler/dequeued/memory': 10506, 'scheduler/enqueued': 10506, 'scheduler/enqueued/memory': 10506, 'start_time': datetime.datetime(2026, 4, 23, 13, 22, 47, 189760, tzinfo=datetime.timezone.utc)} 2026-04-23 13:24:47 [scrapy.core.engine] INFO: Spider closed (finished)