2026-08-10 11:30:11 [scrapy.utils.log] INFO: Scrapy 2.11.1 started (bot: news_scraper) 2026-08-10 11:30:11 [scrapy.utils.log] INFO: Versions: lxml 6.0.2.0, libxml2 2.14.6, cssselect 1.3.0, parsel 1.10.0, w3lib 2.3.1, Twisted 25.5.0, Python 3.11.13 (main, Aug 12 2025, 22:39:41) [GCC 14.2.0], pyOpenSSL 25.3.0 (OpenSSL 3.5.3 16 Sep 2025), cryptography 46.0.1, Platform Linux-5.15.0-186-generic-x86_64-with 2026-08-10 11:30:11 [scrapy.addons] INFO: Enabled addons: [] 2026-08-10 11:30:11 [asyncio] DEBUG: Using selector: EpollSelector 2026-08-10 11:30:11 [scrapy.utils.log] DEBUG: Using reactor: twisted.internet.asyncioreactor.AsyncioSelectorReactor 2026-08-10 11:30:11 [scrapy.utils.log] DEBUG: Using asyncio event loop: asyncio.unix_events._UnixSelectorEventLoop 2026-08-10 11:30:11 [scrapy.extensions.telnet] INFO: Telnet Password: ca5fd3306da65e66 2026-08-10 11:30:11 [botocore.hooks] DEBUG: Changing event name from creating-client-class.iot-data to creating-client-class.iot-data-plane 2026-08-10 11:30:11 [botocore.hooks] DEBUG: Changing event name from before-call.apigateway to before-call.api-gateway 2026-08-10 11:30:11 [botocore.hooks] DEBUG: Changing event name from request-created.machinelearning.Predict to request-created.machine-learning.Predict 2026-08-10 11:30:11 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.autoscaling.CreateLaunchConfiguration to before-parameter-build.auto-scaling.CreateLaunchConfiguration 2026-08-10 11:30:11 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.route53 to before-parameter-build.route-53 2026-08-10 11:30:11 [botocore.hooks] DEBUG: Changing event name from request-created.cloudsearchdomain.Search to request-created.cloudsearch-domain.Search 2026-08-10 11:30:11 [botocore.hooks] DEBUG: Changing event name from docs.*.autoscaling.CreateLaunchConfiguration.complete-section to docs.*.auto-scaling.CreateLaunchConfiguration.complete-section 2026-08-10 11:30:11 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.logs.CreateExportTask to before-parameter-build.cloudwatch-logs.CreateExportTask 2026-08-10 11:30:11 [botocore.hooks] DEBUG: Changing event name from docs.*.logs.CreateExportTask.complete-section to docs.*.cloudwatch-logs.CreateExportTask.complete-section 2026-08-10 11:30:11 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.cloudsearchdomain.Search to before-parameter-build.cloudsearch-domain.Search 2026-08-10 11:30:11 [botocore.hooks] DEBUG: Changing event name from docs.*.cloudsearchdomain.Search.complete-section to docs.*.cloudsearch-domain.Search.complete-section 2026-08-10 11:30:11 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/endpoints.json 2026-08-10 11:30:11 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/sdk-default-configuration.json 2026-08-10 11:30:11 [botocore.hooks] DEBUG: Event choose-service-name: calling handler 2026-08-10 11:30:11 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/s3/2006-03-01/service-2.json.gz 2026-08-10 11:30:11 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/s3/2006-03-01/endpoint-rule-set-1.json.gz 2026-08-10 11:30:11 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/partitions.json 2026-08-10 11:30:11 [botocore.hooks] DEBUG: Event creating-client-class.s3: calling handler 2026-08-10 11:30:11 [botocore.hooks] DEBUG: Event creating-client-class.s3: calling handler ._handler at 0x7fcc708ac860> 2026-08-10 11:30:11 [botocore.hooks] DEBUG: Event creating-client-class.s3: calling handler 2026-08-10 11:30:11 [botocore.endpoint] DEBUG: Setting s3 timeout as (60, 60) 2026-08-10 11:30:11 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/_retry.json 2026-08-10 11:30:11 [botocore.client] DEBUG: Registering retry handlers for service: s3 2026-08-10 11:30:11 [botocore.utils] DEBUG: Registering S3 region redirector handler 2026-08-10 11:30:11 [botocore.utils] DEBUG: Registering S3Express Identity Resolver 2026-08-10 11:30:11 [scrapy.middleware] INFO: Enabled extensions: ['scrapy.extensions.corestats.CoreStats', 'scrapy.extensions.telnet.TelnetConsole', 'scrapy.extensions.memusage.MemoryUsage', 'scrapy.extensions.closespider.CloseSpider', 'scrapy.extensions.feedexport.FeedExporter', 'scrapy.extensions.logstats.LogStats', 'scrapy.extensions.throttle.AutoThrottle'] 2026-08-10 11:30:11 [scrapy.crawler] INFO: Overridden settings: {'AUTOTHROTTLE_ENABLED': True, 'BOT_NAME': 'news_scraper', 'CLOSESPIDER_TIMEOUT': 1800, 'CONCURRENT_REQUESTS': 4, 'DOWNLOAD_DELAY': 2, 'FEED_EXPORT_ENCODING': 'utf-8', 'LOG_FILE': '/opt/scrapyd/logs/news_scraper/vietnamnet_timestamp/d75bfaaa94ae11f1b41882b496cd12ce.log', 'NEWSPIDER_MODULE': 'news_scraper.spiders', 'REQUEST_FINGERPRINTER_IMPLEMENTATION': '2.7', 'ROBOTSTXT_OBEY': True, 'SPIDER_MODULES': ['news_scraper.spiders'], 'TWISTED_REACTOR': 'twisted.internet.asyncioreactor.AsyncioSelectorReactor'} 2026-08-10 11:30:11 [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', 'news_scraper.middlewares.NewsScraperDownloaderMiddleware', '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-08-10 11:30:11 [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-08-10 11:30:11 [scrapy.middleware] INFO: Enabled item pipelines: [] 2026-08-10 11:30:11 [scrapy.core.engine] INFO: Spider opened 2026-08-10 11:30:11 [botocore.hooks] DEBUG: Changing event name from creating-client-class.iot-data to creating-client-class.iot-data-plane 2026-08-10 11:30:11 [botocore.hooks] DEBUG: Changing event name from before-call.apigateway to before-call.api-gateway 2026-08-10 11:30:11 [botocore.hooks] DEBUG: Changing event name from request-created.machinelearning.Predict to request-created.machine-learning.Predict 2026-08-10 11:30:11 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.autoscaling.CreateLaunchConfiguration to before-parameter-build.auto-scaling.CreateLaunchConfiguration 2026-08-10 11:30:11 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.route53 to before-parameter-build.route-53 2026-08-10 11:30:11 [botocore.hooks] DEBUG: Changing event name from request-created.cloudsearchdomain.Search to request-created.cloudsearch-domain.Search 2026-08-10 11:30:11 [botocore.hooks] DEBUG: Changing event name from docs.*.autoscaling.CreateLaunchConfiguration.complete-section to docs.*.auto-scaling.CreateLaunchConfiguration.complete-section 2026-08-10 11:30:11 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.logs.CreateExportTask to before-parameter-build.cloudwatch-logs.CreateExportTask 2026-08-10 11:30:11 [botocore.hooks] DEBUG: Changing event name from docs.*.logs.CreateExportTask.complete-section to docs.*.cloudwatch-logs.CreateExportTask.complete-section 2026-08-10 11:30:11 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.cloudsearchdomain.Search to before-parameter-build.cloudsearch-domain.Search 2026-08-10 11:30:11 [botocore.hooks] DEBUG: Changing event name from docs.*.cloudsearchdomain.Search.complete-section to docs.*.cloudsearch-domain.Search.complete-section 2026-08-10 11:30:11 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/endpoints.json 2026-08-10 11:30:12 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/sdk-default-configuration.json 2026-08-10 11:30:12 [botocore.hooks] DEBUG: Event choose-service-name: calling handler 2026-08-10 11:30:12 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/s3/2006-03-01/service-2.json.gz 2026-08-10 11:30:12 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/s3/2006-03-01/endpoint-rule-set-1.json.gz 2026-08-10 11:30:12 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/partitions.json 2026-08-10 11:30:12 [botocore.hooks] DEBUG: Event creating-client-class.s3: calling handler 2026-08-10 11:30:12 [botocore.hooks] DEBUG: Event creating-client-class.s3: calling handler ._handler at 0x7fcc6f909940> 2026-08-10 11:30:12 [botocore.hooks] DEBUG: Event creating-client-class.s3: calling handler 2026-08-10 11:30:12 [botocore.endpoint] DEBUG: Setting s3 timeout as (60, 60) 2026-08-10 11:30:12 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/_retry.json 2026-08-10 11:30:12 [botocore.client] DEBUG: Registering retry handlers for service: s3 2026-08-10 11:30:12 [botocore.utils] DEBUG: Registering S3 region redirector handler 2026-08-10 11:30:12 [botocore.utils] DEBUG: Registering S3Express Identity Resolver 2026-08-10 11:30:12 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min) 2026-08-10 11:30:12 [vietnamnet_timestamp] INFO: Spider opened: vietnamnet_timestamp 2026-08-10 11:30:12 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6023 2026-08-10 11:30:12 [scrapy.core.engine] DEBUG: Crawled (200) (referer: None) 2026-08-10 11:30:18 [scrapy.core.engine] DEBUG: Crawled (200) (referer: None) 2026-08-10 11:30:21 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://vietnamnet.vn/) 2026-08-10 11:30:23 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://vietnamnet.vn/tin-tuc-24h?bydate=10%2F08%2F2026-10%2F08%2F2026) 2026-08-10 11:30:23 [vietnamnet_timestamp] INFO: 2026-08-10 17:36:00 smaller than 2026-08-10 18:10:00 2026-08-10 11:30:25 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://vietnamnet.vn/tin-tuc-24h?bydate=10%2F08%2F2026-10%2F08%2F2026) 2026-08-10 11:30:25 [vietnamnet_timestamp] INFO: 2026-08-10 17:37:00 smaller than 2026-08-10 18:10:00 2026-08-10 11:30:28 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://vietnamnet.vn/tin-tuc-24h?bydate=10%2F08%2F2026-10%2F08%2F2026) 2026-08-10 11:30:28 [vietnamnet_timestamp] INFO: 2026-08-10 17:38:00 smaller than 2026-08-10 18:10:00 2026-08-10 11:30:31 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://vietnamnet.vn/tin-tuc-24h?bydate=10%2F08%2F2026-10%2F08%2F2026) 2026-08-10 11:30:31 [vietnamnet_timestamp] INFO: 2026-08-10 17:41:00 smaller than 2026-08-10 18:10:00 2026-08-10 11:30:33 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://vietnamnet.vn/tin-tuc-24h?bydate=10%2F08%2F2026-10%2F08%2F2026) 2026-08-10 11:30:33 [vietnamnet_timestamp] INFO: 2026-08-10 16:31:00 smaller than 2026-08-10 18:10:00 2026-08-10 11:30:36 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://vietnamnet.vn/tin-tuc-24h?bydate=10%2F08%2F2026-10%2F08%2F2026) 2026-08-10 11:30:36 [vietnamnet_timestamp] INFO: 2026-08-10 16:31:00 smaller than 2026-08-10 18:10:00 2026-08-10 11:30:39 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://vietnamnet.vn/tin-tuc-24h?bydate=10%2F08%2F2026-10%2F08%2F2026) 2026-08-10 11:30:39 [vietnamnet_timestamp] INFO: 2026-08-10 16:34:00 smaller than 2026-08-10 18:10:00 2026-08-10 11:30:42 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://vietnamnet.vn/tin-tuc-24h?bydate=10%2F08%2F2026-10%2F08%2F2026) 2026-08-10 11:30:42 [vietnamnet_timestamp] INFO: 2026-08-10 16:35:00 smaller than 2026-08-10 18:10:00 2026-08-10 11:30:44 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://vietnamnet.vn/tin-tuc-24h?bydate=10%2F08%2F2026-10%2F08%2F2026) 2026-08-10 11:30:44 [vietnamnet_timestamp] INFO: 2026-08-10 16:37:00 smaller than 2026-08-10 18:10:00 2026-08-10 11:30:46 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://vietnamnet.vn/tin-tuc-24h?bydate=10%2F08%2F2026-10%2F08%2F2026) 2026-08-10 11:30:46 [vietnamnet_timestamp] INFO: 2026-08-10 16:39:00 smaller than 2026-08-10 18:10:00 2026-08-10 11:30:49 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://vietnamnet.vn/tin-tuc-24h?bydate=10%2F08%2F2026-10%2F08%2F2026) 2026-08-10 11:30:49 [vietnamnet_timestamp] INFO: 2026-08-10 16:44:00 smaller than 2026-08-10 18:10:00 2026-08-10 11:30:51 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://vietnamnet.vn/tin-tuc-24h?bydate=10%2F08%2F2026-10%2F08%2F2026) 2026-08-10 11:30:52 [vietnamnet_timestamp] INFO: 2026-08-10 16:50:00 smaller than 2026-08-10 18:10:00 2026-08-10 11:30:54 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://vietnamnet.vn/tin-tuc-24h?bydate=10%2F08%2F2026-10%2F08%2F2026) 2026-08-10 11:30:55 [vietnamnet_timestamp] INFO: 2026-08-10 16:58:00 smaller than 2026-08-10 18:10:00 2026-08-10 11:30:57 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://vietnamnet.vn/tin-tuc-24h?bydate=10%2F08%2F2026-10%2F08%2F2026) 2026-08-10 11:30:57 [vietnamnet_timestamp] INFO: 2026-08-10 16:59:00 smaller than 2026-08-10 18:10:00 2026-08-10 11:31:00 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://vietnamnet.vn/tin-tuc-24h?bydate=10%2F08%2F2026-10%2F08%2F2026) 2026-08-10 11:31:00 [vietnamnet_timestamp] INFO: 2026-08-10 16:59:00 smaller than 2026-08-10 18:10:00 2026-08-10 11:31:03 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://vietnamnet.vn/tin-tuc-24h?bydate=10%2F08%2F2026-10%2F08%2F2026) 2026-08-10 11:31:03 [vietnamnet_timestamp] INFO: 2026-08-10 17:00:00 smaller than 2026-08-10 18:10:00 2026-08-10 11:31:04 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://vietnamnet.vn/tin-tuc-24h?bydate=10%2F08%2F2026-10%2F08%2F2026) 2026-08-10 11:31:05 [vietnamnet_timestamp] INFO: 2026-08-10 17:08:00 smaller than 2026-08-10 18:10:00 2026-08-10 11:31:07 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://vietnamnet.vn/tin-tuc-24h?bydate=10%2F08%2F2026-10%2F08%2F2026) 2026-08-10 11:31:07 [vietnamnet_timestamp] INFO: 2026-08-10 17:30:00 smaller than 2026-08-10 18:10:00 2026-08-10 11:31:09 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://vietnamnet.vn/tin-tuc-24h?bydate=10%2F08%2F2026-10%2F08%2F2026) 2026-08-10 11:31:09 [vietnamnet_timestamp] INFO: 2026-08-10 17:34:00 smaller than 2026-08-10 18:10:00 2026-08-10 11:31:11 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://vietnamnet.vn/tin-tuc-24h?bydate=10%2F08%2F2026-10%2F08%2F2026) 2026-08-10 11:31:11 [vietnamnet_timestamp] INFO: 2026-08-10 17:35:00 smaller than 2026-08-10 18:10:00 2026-08-10 11:31:12 [scrapy.extensions.logstats] INFO: Crawled 23 pages (at 23 pages/min), scraped 0 items (at 0 items/min) 2026-08-10 11:31:13 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://vietnamnet.vn/tin-tuc-24h?bydate=10%2F08%2F2026-10%2F08%2F2026) 2026-08-10 11:31:14 [vietnamnet_timestamp] INFO: 2026-08-10 17:43:00 smaller than 2026-08-10 18:10:00 2026-08-10 11:31:16 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://vietnamnet.vn/tin-tuc-24h?bydate=10%2F08%2F2026-10%2F08%2F2026) 2026-08-10 11:31:16 [vietnamnet_timestamp] INFO: 2026-08-10 17:44:00 smaller than 2026-08-10 18:10:00 2026-08-10 11:31:19 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://vietnamnet.vn/tin-tuc-24h?bydate=10%2F08%2F2026-10%2F08%2F2026) 2026-08-10 11:31:19 [vietnamnet_timestamp] INFO: 2026-08-10 18:01:00 smaller than 2026-08-10 18:10:00 2026-08-10 11:31:21 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://vietnamnet.vn/tin-tuc-24h?bydate=10%2F08%2F2026-10%2F08%2F2026) 2026-08-10 11:31:21 [vietnamnet_timestamp] INFO: 2026-08-10 18:08:00 smaller than 2026-08-10 18:10:00 2026-08-10 11:31:24 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://vietnamnet.vn/tin-tuc-24h?bydate=10%2F08%2F2026-10%2F08%2F2026) 2026-08-10 11:31:24 [openai._base_client] DEBUG: Request options: {'method': 'post', 'url': '/chat/completions', 'files': None, 'json_data': {'messages': [{'role': 'user', 'content': "Act as a content analysis tool. I will provide you with a piece of content, and your task is to extract relevant tags (keywords or phrases) that summarize the main topics, themes, or ideas present in the text. The tags should be concise, specific, and useful for categorization or search purposes. Ignore common filler words (e.g., 'the', 'and', 'is') unless they are part of a specific concept or phrase. After analyzing the content, return the tags in a simple list format. Here is the content to analyze: Theo điều tra ban đầu, sáng 2/8, Lâm điều khiển xe máy BKS 61-252T theo hướng đi Cát Tiên, tỉnh Lâm Đồng. Trên đường đi, đối tượng ghé một quán nước và nhờ một nam thanh niên chuyển 500.000 đồng vào tài khoản mang tên mình. Nhận tiền xong, Lâm dùng số tiền để chơi game trên điện thoại và thua hết. Sau đó, đối tượng điều khiển xe rời khỏi quán nhằm chiếm đoạt số tiền. Phát hiện sự việc, nam thanh niên cùng người thân tổ chức truy tìm. Khoảng 14h cùng ngày, nhóm này phát hiện Lâm tại xã Phước Sơn nên dùng xe máy đuổi theo. Trong lúc bỏ chạy, Lâm bất ngờ lấy một khẩu súng ngắn, lên đạn rồi chĩa về phía những người truy đuổi, đe dọa sẽ nổ súng nếu họ tiếp tục bám theo. Nhóm người lo sợ không dám áp sát, Lâm thừa cơ tăng ga bỏ chạy. Sau đó, Lâm bỏ lại xe máy, chạy bộ qua các ngõ xóm để lẩn trốn. Khi ra đường lớn, đối tượng được một ô tô cho đi nhờ khoảng 7km rồi xuống xe, tiếp tục đi bộ đến một quán cà phê. Thấy quán không có người trông coi, Lâm lấy một xe máy đang cắm sẵn chìa khóa và một điện thoại rồi chạy về hướng Lâm Đồng. Đến địa phận tỉnh Lâm Đồng, Lâm bị CSGT yêu cầu dừng xe. Ban đầu đối tượng chấp hành, nhưng sau đó giả vờ nghe điện thoại để bất ngờ bỏ chạy, để lại chiếc xe. Lâm tiếp tục bắt xe đến Madagui, đón xe khách đi Đà Lạt rồi đến xã Ninh Hòa (tỉnh Khánh Hòa) tìm nhà một người bạn để lẩn trốn. Qua truy xét, cơ quan công an xác định nơi lẩn trốn và bắt giữ Lâm."}], 'model': 'gpt-4o-mini', 'max_tokens': 200, 'temperature': 0.3}} 2026-08-10 11:31:24 [openai._base_client] DEBUG: Sending HTTP Request: POST https://api.openai.com/v1/chat/completions 2026-08-10 11:31:24 [httpcore.connection] DEBUG: connect_tcp.started host='api.openai.com' port=443 local_address=None timeout=900 socket_options=None 2026-08-10 11:31:24 [httpcore.connection] DEBUG: connect_tcp.complete return_value= 2026-08-10 11:31:24 [httpcore.connection] DEBUG: start_tls.started ssl_context= server_hostname='api.openai.com' timeout=900 2026-08-10 11:31:24 [httpcore.connection] DEBUG: start_tls.complete return_value= 2026-08-10 11:31:24 [httpcore.http11] DEBUG: send_request_headers.started request= 2026-08-10 11:31:24 [httpcore.http11] DEBUG: send_request_headers.complete 2026-08-10 11:31:24 [httpcore.http11] DEBUG: send_request_body.started request= 2026-08-10 11:31:24 [httpcore.http11] DEBUG: send_request_body.complete 2026-08-10 11:31:24 [httpcore.http11] DEBUG: receive_response_headers.started request= 2026-08-10 11:31:24 [httpcore.http11] DEBUG: receive_response_headers.complete return_value=(b'HTTP/1.1', 429, b'Too Many Requests', [(b'Date', b'Mon, 10 Aug 2026 11:31:24 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Content-Length', b'283'), (b'Connection', b'keep-alive'), (b'CF-Ray', b'a28eac8e8e46b21b-HKG'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Server', b'cloudflare'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Origin'), (b'Access-Control-Expose-Headers', b'CF-Ray'), (b'Access-Control-Expose-Headers', b'CF-Ray'), (b'X-Content-Type-Options', b'nosniff'), (b'x-openai-proxy-wasm', b'v0.1'), (b'x-request-id', b'req_ab96bc31aa2743e3976a81c576c36f1f'), (b'set-cookie', b'__cf_bm=nDKIb6ScuIKLPf0DNlQbl.KIcAlf7F9SDekmkE_ue9U-1786361484.5682604-1.0.1.1-HS4zfABQ5.q45iR15dZ3Phyj8RhshaizMQz4mO8QGurrgRc0IUuSlV65S87Xs5yfouk2ZgqN.lvrPtCmttxMM6iyUb_AwHgEJRJX288HJgY1fo0D16f6csV2hAF1PZZJ; HttpOnly; SameSite=None; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 10 Aug 2026 12:01:24 GMT'), (b'alt-svc', b'h3=":443"; ma=86400')]) 2026-08-10 11:31:24 [httpx] INFO: HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 429 Too Many Requests" 2026-08-10 11:31:24 [httpcore.http11] DEBUG: receive_response_body.started request= 2026-08-10 11:31:24 [httpcore.http11] DEBUG: receive_response_body.complete 2026-08-10 11:31:24 [httpcore.http11] DEBUG: response_closed.started 2026-08-10 11:31:24 [httpcore.http11] DEBUG: response_closed.complete 2026-08-10 11:31:24 [openai._base_client] DEBUG: HTTP Response: POST https://api.openai.com/v1/chat/completions "429 Too Many Requests" Headers([('date', 'Mon, 10 Aug 2026 11:31:24 GMT'), ('content-type', 'application/json; charset=utf-8'), ('content-length', '283'), ('connection', 'keep-alive'), ('cf-ray', 'a28eac8e8e46b21b-HKG'), ('cf-cache-status', 'DYNAMIC'), ('server', 'cloudflare'), ('strict-transport-security', 'max-age=31536000; includeSubDomains; preload'), ('vary', 'Origin'), ('access-control-expose-headers', 'CF-Ray'), ('access-control-expose-headers', 'CF-Ray'), ('x-content-type-options', 'nosniff'), ('x-openai-proxy-wasm', 'v0.1'), ('x-request-id', 'req_ab96bc31aa2743e3976a81c576c36f1f'), ('set-cookie', '__cf_bm=nDKIb6ScuIKLPf0DNlQbl.KIcAlf7F9SDekmkE_ue9U-1786361484.5682604-1.0.1.1-HS4zfABQ5.q45iR15dZ3Phyj8RhshaizMQz4mO8QGurrgRc0IUuSlV65S87Xs5yfouk2ZgqN.lvrPtCmttxMM6iyUb_AwHgEJRJX288HJgY1fo0D16f6csV2hAF1PZZJ; HttpOnly; SameSite=None; Secure; Path=/; Domain=api.openai.com; Expires=Mon, 10 Aug 2026 12:01:24 GMT'), ('alt-svc', 'h3=":443"; ma=86400')]) 2026-08-10 11:31:24 [openai._base_client] DEBUG: request_id: req_ab96bc31aa2743e3976a81c576c36f1f 2026-08-10 11:31:24 [openai._base_client] DEBUG: Encountered httpx.HTTPStatusError Traceback (most recent call last): File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1002, in _request response.raise_for_status() File "/usr/local/lib/python3.11/site-packages/httpx/_models.py", line 829, in raise_for_status raise HTTPStatusError(message, request=request, response=self) httpx.HTTPStatusError: Client error '429 Too Many Requests' for url 'https://api.openai.com/v1/chat/completions' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 2026-08-10 11:31:24 [openai._base_client] DEBUG: Retrying due to status code 429 2026-08-10 11:31:24 [openai._base_client] DEBUG: 2 retries left 2026-08-10 11:31:24 [openai._base_client] INFO: Retrying request to /chat/completions in 0.477933 seconds 2026-08-10 11:31:25 [openai._base_client] DEBUG: Request options: {'method': 'post', 'url': '/chat/completions', 'files': None, 'json_data': {'messages': [{'role': 'user', 'content': "Act as a content analysis tool. I will provide you with a piece of content, and your task is to extract relevant tags (keywords or phrases) that summarize the main topics, themes, or ideas present in the text. The tags should be concise, specific, and useful for categorization or search purposes. Ignore common filler words (e.g., 'the', 'and', 'is') unless they are part of a specific concept or phrase. After analyzing the content, return the tags in a simple list format. Here is the content to analyze: Theo điều tra ban đầu, sáng 2/8, Lâm điều khiển xe máy BKS 61-252T theo hướng đi Cát Tiên, tỉnh Lâm Đồng. Trên đường đi, đối tượng ghé một quán nước và nhờ một nam thanh niên chuyển 500.000 đồng vào tài khoản mang tên mình. Nhận tiền xong, Lâm dùng số tiền để chơi game trên điện thoại và thua hết. Sau đó, đối tượng điều khiển xe rời khỏi quán nhằm chiếm đoạt số tiền. Phát hiện sự việc, nam thanh niên cùng người thân tổ chức truy tìm. Khoảng 14h cùng ngày, nhóm này phát hiện Lâm tại xã Phước Sơn nên dùng xe máy đuổi theo. Trong lúc bỏ chạy, Lâm bất ngờ lấy một khẩu súng ngắn, lên đạn rồi chĩa về phía những người truy đuổi, đe dọa sẽ nổ súng nếu họ tiếp tục bám theo. Nhóm người lo sợ không dám áp sát, Lâm thừa cơ tăng ga bỏ chạy. Sau đó, Lâm bỏ lại xe máy, chạy bộ qua các ngõ xóm để lẩn trốn. Khi ra đường lớn, đối tượng được một ô tô cho đi nhờ khoảng 7km rồi xuống xe, tiếp tục đi bộ đến một quán cà phê. Thấy quán không có người trông coi, Lâm lấy một xe máy đang cắm sẵn chìa khóa và một điện thoại rồi chạy về hướng Lâm Đồng. Đến địa phận tỉnh Lâm Đồng, Lâm bị CSGT yêu cầu dừng xe. Ban đầu đối tượng chấp hành, nhưng sau đó giả vờ nghe điện thoại để bất ngờ bỏ chạy, để lại chiếc xe. Lâm tiếp tục bắt xe đến Madagui, đón xe khách đi Đà Lạt rồi đến xã Ninh Hòa (tỉnh Khánh Hòa) tìm nhà một người bạn để lẩn trốn. Qua truy xét, cơ quan công an xác định nơi lẩn trốn và bắt giữ Lâm."}], 'model': 'gpt-4o-mini', 'max_tokens': 200, 'temperature': 0.3}} 2026-08-10 11:31:25 [openai._base_client] DEBUG: Sending HTTP Request: POST https://api.openai.com/v1/chat/completions 2026-08-10 11:31:25 [httpcore.http11] DEBUG: send_request_headers.started request= 2026-08-10 11:31:25 [httpcore.http11] DEBUG: send_request_headers.complete 2026-08-10 11:31:25 [httpcore.http11] DEBUG: send_request_body.started request= 2026-08-10 11:31:25 [httpcore.http11] DEBUG: send_request_body.complete 2026-08-10 11:31:25 [httpcore.http11] DEBUG: receive_response_headers.started request= 2026-08-10 11:31:25 [httpcore.http11] DEBUG: receive_response_headers.complete return_value=(b'HTTP/1.1', 429, b'Too Many Requests', [(b'Date', b'Mon, 10 Aug 2026 11:31:25 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Content-Length', b'283'), (b'Connection', b'keep-alive'), (b'CF-Ray', b'a28eac934bb9b21b-HKG'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Server', b'cloudflare'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Origin'), (b'Access-Control-Expose-Headers', b'CF-Ray'), (b'Access-Control-Expose-Headers', b'CF-Ray'), (b'X-Content-Type-Options', b'nosniff'), (b'x-openai-proxy-wasm', b'v0.1'), (b'x-request-id', b'req_40b0188151664e7eb93a241e3096b0d8'), (b'alt-svc', b'h3=":443"; ma=86400')]) 2026-08-10 11:31:25 [httpx] INFO: HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 429 Too Many Requests" 2026-08-10 11:31:25 [httpcore.http11] DEBUG: receive_response_body.started request= 2026-08-10 11:31:25 [httpcore.http11] DEBUG: receive_response_body.complete 2026-08-10 11:31:25 [httpcore.http11] DEBUG: response_closed.started 2026-08-10 11:31:25 [httpcore.http11] DEBUG: response_closed.complete 2026-08-10 11:31:25 [openai._base_client] DEBUG: HTTP Response: POST https://api.openai.com/v1/chat/completions "429 Too Many Requests" Headers([('date', 'Mon, 10 Aug 2026 11:31:25 GMT'), ('content-type', 'application/json; charset=utf-8'), ('content-length', '283'), ('connection', 'keep-alive'), ('cf-ray', 'a28eac934bb9b21b-HKG'), ('cf-cache-status', 'DYNAMIC'), ('server', 'cloudflare'), ('strict-transport-security', 'max-age=31536000; includeSubDomains; preload'), ('vary', 'Origin'), ('access-control-expose-headers', 'CF-Ray'), ('access-control-expose-headers', 'CF-Ray'), ('x-content-type-options', 'nosniff'), ('x-openai-proxy-wasm', 'v0.1'), ('x-request-id', 'req_40b0188151664e7eb93a241e3096b0d8'), ('alt-svc', 'h3=":443"; ma=86400')]) 2026-08-10 11:31:25 [openai._base_client] DEBUG: request_id: req_40b0188151664e7eb93a241e3096b0d8 2026-08-10 11:31:25 [openai._base_client] DEBUG: Encountered httpx.HTTPStatusError Traceback (most recent call last): File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1002, in _request response.raise_for_status() File "/usr/local/lib/python3.11/site-packages/httpx/_models.py", line 829, in raise_for_status raise HTTPStatusError(message, request=request, response=self) httpx.HTTPStatusError: Client error '429 Too Many Requests' for url 'https://api.openai.com/v1/chat/completions' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1002, in _request response.raise_for_status() File "/usr/local/lib/python3.11/site-packages/httpx/_models.py", line 829, in raise_for_status raise HTTPStatusError(message, request=request, response=self) httpx.HTTPStatusError: Client error '429 Too Many Requests' for url 'https://api.openai.com/v1/chat/completions' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 2026-08-10 11:31:25 [openai._base_client] DEBUG: Retrying due to status code 429 2026-08-10 11:31:25 [openai._base_client] DEBUG: 1 retry left 2026-08-10 11:31:25 [openai._base_client] INFO: Retrying request to /chat/completions in 0.909742 seconds 2026-08-10 11:31:26 [openai._base_client] DEBUG: Request options: {'method': 'post', 'url': '/chat/completions', 'files': None, 'json_data': {'messages': [{'role': 'user', 'content': "Act as a content analysis tool. I will provide you with a piece of content, and your task is to extract relevant tags (keywords or phrases) that summarize the main topics, themes, or ideas present in the text. The tags should be concise, specific, and useful for categorization or search purposes. Ignore common filler words (e.g., 'the', 'and', 'is') unless they are part of a specific concept or phrase. After analyzing the content, return the tags in a simple list format. Here is the content to analyze: Theo điều tra ban đầu, sáng 2/8, Lâm điều khiển xe máy BKS 61-252T theo hướng đi Cát Tiên, tỉnh Lâm Đồng. Trên đường đi, đối tượng ghé một quán nước và nhờ một nam thanh niên chuyển 500.000 đồng vào tài khoản mang tên mình. Nhận tiền xong, Lâm dùng số tiền để chơi game trên điện thoại và thua hết. Sau đó, đối tượng điều khiển xe rời khỏi quán nhằm chiếm đoạt số tiền. Phát hiện sự việc, nam thanh niên cùng người thân tổ chức truy tìm. Khoảng 14h cùng ngày, nhóm này phát hiện Lâm tại xã Phước Sơn nên dùng xe máy đuổi theo. Trong lúc bỏ chạy, Lâm bất ngờ lấy một khẩu súng ngắn, lên đạn rồi chĩa về phía những người truy đuổi, đe dọa sẽ nổ súng nếu họ tiếp tục bám theo. Nhóm người lo sợ không dám áp sát, Lâm thừa cơ tăng ga bỏ chạy. Sau đó, Lâm bỏ lại xe máy, chạy bộ qua các ngõ xóm để lẩn trốn. Khi ra đường lớn, đối tượng được một ô tô cho đi nhờ khoảng 7km rồi xuống xe, tiếp tục đi bộ đến một quán cà phê. Thấy quán không có người trông coi, Lâm lấy một xe máy đang cắm sẵn chìa khóa và một điện thoại rồi chạy về hướng Lâm Đồng. Đến địa phận tỉnh Lâm Đồng, Lâm bị CSGT yêu cầu dừng xe. Ban đầu đối tượng chấp hành, nhưng sau đó giả vờ nghe điện thoại để bất ngờ bỏ chạy, để lại chiếc xe. Lâm tiếp tục bắt xe đến Madagui, đón xe khách đi Đà Lạt rồi đến xã Ninh Hòa (tỉnh Khánh Hòa) tìm nhà một người bạn để lẩn trốn. Qua truy xét, cơ quan công an xác định nơi lẩn trốn và bắt giữ Lâm."}], 'model': 'gpt-4o-mini', 'max_tokens': 200, 'temperature': 0.3}} 2026-08-10 11:31:26 [openai._base_client] DEBUG: Sending HTTP Request: POST https://api.openai.com/v1/chat/completions 2026-08-10 11:31:26 [httpcore.http11] DEBUG: send_request_headers.started request= 2026-08-10 11:31:26 [httpcore.http11] DEBUG: send_request_headers.complete 2026-08-10 11:31:26 [httpcore.http11] DEBUG: send_request_body.started request= 2026-08-10 11:31:26 [httpcore.http11] DEBUG: send_request_body.complete 2026-08-10 11:31:26 [httpcore.http11] DEBUG: receive_response_headers.started request= 2026-08-10 11:31:26 [httpcore.http11] DEBUG: receive_response_headers.complete return_value=(b'HTTP/1.1', 429, b'Too Many Requests', [(b'Date', b'Mon, 10 Aug 2026 11:31:26 GMT'), (b'Content-Type', b'application/json; charset=utf-8'), (b'Content-Length', b'283'), (b'Connection', b'keep-alive'), (b'CF-Ray', b'a28eac9a6e30b21b-HKG'), (b'CF-Cache-Status', b'DYNAMIC'), (b'Server', b'cloudflare'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'Vary', b'Origin'), (b'Access-Control-Expose-Headers', b'CF-Ray'), (b'Access-Control-Expose-Headers', b'CF-Ray'), (b'X-Content-Type-Options', b'nosniff'), (b'x-openai-proxy-wasm', b'v0.1'), (b'x-request-id', b'req_e1710972446841c7bfa59a8f96ce1385'), (b'alt-svc', b'h3=":443"; ma=86400')]) 2026-08-10 11:31:26 [httpx] INFO: HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 429 Too Many Requests" 2026-08-10 11:31:26 [httpcore.http11] DEBUG: receive_response_body.started request= 2026-08-10 11:31:26 [httpcore.http11] DEBUG: receive_response_body.complete 2026-08-10 11:31:26 [httpcore.http11] DEBUG: response_closed.started 2026-08-10 11:31:26 [httpcore.http11] DEBUG: response_closed.complete 2026-08-10 11:31:26 [openai._base_client] DEBUG: HTTP Response: POST https://api.openai.com/v1/chat/completions "429 Too Many Requests" Headers([('date', 'Mon, 10 Aug 2026 11:31:26 GMT'), ('content-type', 'application/json; charset=utf-8'), ('content-length', '283'), ('connection', 'keep-alive'), ('cf-ray', 'a28eac9a6e30b21b-HKG'), ('cf-cache-status', 'DYNAMIC'), ('server', 'cloudflare'), ('strict-transport-security', 'max-age=31536000; includeSubDomains; preload'), ('vary', 'Origin'), ('access-control-expose-headers', 'CF-Ray'), ('access-control-expose-headers', 'CF-Ray'), ('x-content-type-options', 'nosniff'), ('x-openai-proxy-wasm', 'v0.1'), ('x-request-id', 'req_e1710972446841c7bfa59a8f96ce1385'), ('alt-svc', 'h3=":443"; ma=86400')]) 2026-08-10 11:31:26 [openai._base_client] DEBUG: request_id: req_e1710972446841c7bfa59a8f96ce1385 2026-08-10 11:31:26 [openai._base_client] DEBUG: Encountered httpx.HTTPStatusError Traceback (most recent call last): File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1002, in _request response.raise_for_status() File "/usr/local/lib/python3.11/site-packages/httpx/_models.py", line 829, in raise_for_status raise HTTPStatusError(message, request=request, response=self) httpx.HTTPStatusError: Client error '429 Too Many Requests' for url 'https://api.openai.com/v1/chat/completions' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1002, in _request response.raise_for_status() File "/usr/local/lib/python3.11/site-packages/httpx/_models.py", line 829, in raise_for_status raise HTTPStatusError(message, request=request, response=self) httpx.HTTPStatusError: Client error '429 Too Many Requests' for url 'https://api.openai.com/v1/chat/completions' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1002, in _request response.raise_for_status() File "/usr/local/lib/python3.11/site-packages/httpx/_models.py", line 829, in raise_for_status raise HTTPStatusError(message, request=request, response=self) httpx.HTTPStatusError: Client error '429 Too Many Requests' for url 'https://api.openai.com/v1/chat/completions' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 2026-08-10 11:31:26 [openai._base_client] DEBUG: Re-raising status error 2026-08-10 11:31:26 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://vietnamnet.vn/tin-tuc-24h?bydate=10%2F08%2F2026-10%2F08%2F2026) Traceback (most recent call last): File "/usr/local/lib/python3.11/site-packages/scrapy/utils/defer.py", line 279, in iter_errback yield next(it) ^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/scrapy/utils/python.py", line 350, in __next__ return next(self.data) ^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/scrapy/utils/python.py", line 350, in __next__ return next(self.data) ^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/scrapy/core/spidermw.py", line 106, in process_sync for r in iterable: File "/usr/local/lib/python3.11/site-packages/scrapy/spidermiddlewares/offsite.py", line 28, in return (r for r in result or () if self._filter(r, spider)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/scrapy/core/spidermw.py", line 106, in process_sync for r in iterable: File "/usr/local/lib/python3.11/site-packages/scrapy/spidermiddlewares/referer.py", line 352, in return (self._set_referer(r, response) for r in result or ()) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/scrapy/core/spidermw.py", line 106, in process_sync for r in iterable: File "/usr/local/lib/python3.11/site-packages/scrapy/spidermiddlewares/urllength.py", line 27, in return (r for r in result or () if self._filter(r, spider)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/scrapy/core/spidermw.py", line 106, in process_sync for r in iterable: File "/usr/local/lib/python3.11/site-packages/scrapy/spidermiddlewares/depth.py", line 31, in return (r for r in result or () if self._filter(r, response, spider)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/scrapy/core/spidermw.py", line 106, in process_sync for r in iterable: File "/opt/scrapy_projects/news_scraper/spiders/vietnamnet_timestamp_spider.py", line 91, in parse_article item["tags"] = item.extract_tags() ^^^^^^^^^^^^^^^^^^^ File "/opt/scrapy_projects/news_scraper/items.py", line 51, in extract_tags response = client.chat.completions.create( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/openai/_utils/_utils.py", line 279, in wrapper return func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/openai/resources/chat/completions/completions.py", line 914, in create return self._post( ^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1242, in post return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 919, in request return self._request( ^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1008, in _request return self._retry_request( ^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1057, in _retry_request return self._request( ^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1008, in _request return self._retry_request( ^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1057, in _retry_request return self._request( ^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1023, in _request raise self._make_status_error_from_response(err.response) from None openai.RateLimitError: Error code: 429 - {'error': {'message': 'You have no credits remaining. Add credits to continue using the API at https://platform.openai.com/settings/organization/billing/.', 'type': 'insufficient_quota', 'param': None, 'code': 'credit_balance_exhausted'}} 2026-08-10 11:31:26 [scrapy.core.engine] INFO: Closing spider (finished) 2026-08-10 11:31:26 [boto3.s3.transfer] DEBUG: Opting out of CRT Transfer Manager. Preferred client: auto, CRT available: False, Instance Optimized: False. 2026-08-10 11:31:26 [boto3.s3.transfer] DEBUG: Using default client. pid: 47254, thread: 140516020759352 2026-08-10 11:31:26 [s3transfer.utils] DEBUG: Acquiring 0 2026-08-10 11:31:26 [s3transfer.tasks] DEBUG: UploadSubmissionTask(transfer_id=0, {'transfer_future': }) about to wait for the following futures [] 2026-08-10 11:31:26 [s3transfer.tasks] DEBUG: UploadSubmissionTask(transfer_id=0, {'transfer_future': }) done waiting for dependent futures 2026-08-10 11:31:26 [s3transfer.tasks] DEBUG: Executing task UploadSubmissionTask(transfer_id=0, {'transfer_future': }) with kwargs {'client': , 'config': , 'osutil': , 'request_executor': , 'transfer_future': } 2026-08-10 11:31:26 [s3transfer.futures] DEBUG: Submitting task PutObjectTask(transfer_id=0, {'bucket': 'dagster-output-data', 'key': 'vietnamnet_timestamp/vietnamnet_timestamp_d75bfaaa94ae11f1b41882b496cd12ce_scheduled_2026-08-10.jl', 'extra_args': {}}) to executor for transfer request: 0. 2026-08-10 11:31:26 [s3transfer.utils] DEBUG: Acquiring 0 2026-08-10 11:31:26 [s3transfer.tasks] DEBUG: PutObjectTask(transfer_id=0, {'bucket': 'dagster-output-data', 'key': 'vietnamnet_timestamp/vietnamnet_timestamp_d75bfaaa94ae11f1b41882b496cd12ce_scheduled_2026-08-10.jl', 'extra_args': {}}) about to wait for the following futures [] 2026-08-10 11:31:26 [s3transfer.utils] DEBUG: Releasing acquire 0/None 2026-08-10 11:31:26 [s3transfer.tasks] DEBUG: PutObjectTask(transfer_id=0, {'bucket': 'dagster-output-data', 'key': 'vietnamnet_timestamp/vietnamnet_timestamp_d75bfaaa94ae11f1b41882b496cd12ce_scheduled_2026-08-10.jl', 'extra_args': {}}) done waiting for dependent futures 2026-08-10 11:31:26 [s3transfer.tasks] DEBUG: Executing task PutObjectTask(transfer_id=0, {'bucket': 'dagster-output-data', 'key': 'vietnamnet_timestamp/vietnamnet_timestamp_d75bfaaa94ae11f1b41882b496cd12ce_scheduled_2026-08-10.jl', 'extra_args': {}}) with kwargs {'client': , 'fileobj': , 'bucket': 'dagster-output-data', 'key': 'vietnamnet_timestamp/vietnamnet_timestamp_d75bfaaa94ae11f1b41882b496cd12ce_scheduled_2026-08-10.jl', 'extra_args': {}} 2026-08-10 11:31:26 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler 2026-08-10 11:31:26 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler 2026-08-10 11:31:26 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler 2026-08-10 11:31:26 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler 2026-08-10 11:31:26 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler 2026-08-10 11:31:26 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler > 2026-08-10 11:31:26 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler > 2026-08-10 11:31:26 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler 2026-08-10 11:31:26 [botocore.hooks] DEBUG: Event before-endpoint-resolution.s3: calling handler 2026-08-10 11:31:26 [botocore.hooks] DEBUG: Event before-endpoint-resolution.s3: calling handler > 2026-08-10 11:31:26 [botocore.regions] DEBUG: Calling endpoint provider with parameters: {'Bucket': 'dagster-output-data', 'Region': 'us-east-1', 'UseFIPS': False, 'UseDualStack': False, 'Endpoint': 'https://lake-api.actable.ai/', 'ForcePathStyle': True, 'Accelerate': False, 'UseGlobalEndpoint': True, 'Key': 'vietnamnet_timestamp/vietnamnet_timestamp_d75bfaaa94ae11f1b41882b496cd12ce_scheduled_2026-08-10.jl', 'DisableMultiRegionAccessPoints': False, 'UseArnRegion': True} 2026-08-10 11:31:26 [botocore.regions] DEBUG: Endpoint provider result: https://lake-api.actable.ai/dagster-output-data 2026-08-10 11:31:26 [botocore.regions] DEBUG: Selecting from endpoint provider's list of auth schemes: "sigv4". User selected auth scheme is: "None" 2026-08-10 11:31:26 [botocore.regions] DEBUG: Selected auth type "v4" as "v4" with signing context params: {'region': 'us-east-1', 'signing_name': 's3', 'disableDoubleEncoding': True} 2026-08-10 11:31:26 [botocore.hooks] DEBUG: Event before-call.s3.PutObject: calling handler 2026-08-10 11:31:26 [botocore.hooks] DEBUG: Event before-call.s3.PutObject: calling handler 2026-08-10 11:31:26 [botocore.handlers] DEBUG: Adding expect 100 continue header to request. 2026-08-10 11:31:26 [botocore.hooks] DEBUG: Event before-call.s3.PutObject: calling handler > 2026-08-10 11:31:26 [botocore.hooks] DEBUG: Event before-call.s3.PutObject: calling handler 2026-08-10 11:31:26 [botocore.hooks] DEBUG: Event before-call.s3.PutObject: calling handler 2026-08-10 11:31:26 [botocore.endpoint] DEBUG: Making request for OperationModel(name=PutObject) with params: {'url_path': '/vietnamnet_timestamp/vietnamnet_timestamp_d75bfaaa94ae11f1b41882b496cd12ce_scheduled_2026-08-10.jl', 'query_string': {}, 'method': 'PUT', 'headers': {'User-Agent': 'Boto3/1.34.57 md/Botocore#1.34.162 ua/2.0 os/linux#5.15.0-186-generic md/arch#x86_64 lang/python#3.11.13 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.34.162', 'Content-MD5': '1B2M2Y8AsgTpgAmY7PhCfg==', 'Expect': '100-continue'}, 'body': , 'auth_path': '/dagster-output-data/vietnamnet_timestamp/vietnamnet_timestamp_d75bfaaa94ae11f1b41882b496cd12ce_scheduled_2026-08-10.jl', 'url': 'https://lake-api.actable.ai/dagster-output-data/vietnamnet_timestamp/vietnamnet_timestamp_d75bfaaa94ae11f1b41882b496cd12ce_scheduled_2026-08-10.jl', 'context': {'client_region': 'us-east-1', 'client_config': , 'has_streaming_input': True, 'auth_type': 'v4', 's3_redirect': {'redirected': False, 'bucket': 'dagster-output-data', 'params': {'Bucket': 'dagster-output-data', 'Key': 'vietnamnet_timestamp/vietnamnet_timestamp_d75bfaaa94ae11f1b41882b496cd12ce_scheduled_2026-08-10.jl', 'Body': }}, 'input_params': {'Bucket': 'dagster-output-data', 'Key': 'vietnamnet_timestamp/vietnamnet_timestamp_d75bfaaa94ae11f1b41882b496cd12ce_scheduled_2026-08-10.jl'}, 'signing': {'region': 'us-east-1', 'signing_name': 's3', 'disableDoubleEncoding': True}, 'endpoint_properties': {'authSchemes': [{'disableDoubleEncoding': True, 'name': 'sigv4', 'signingName': 's3', 'signingRegion': 'us-east-1'}]}}} 2026-08-10 11:31:26 [botocore.hooks] DEBUG: Event request-created.s3.PutObject: calling handler 2026-08-10 11:31:26 [botocore.hooks] DEBUG: Event request-created.s3.PutObject: calling handler > 2026-08-10 11:31:26 [botocore.hooks] DEBUG: Event choose-signer.s3.PutObject: calling handler > 2026-08-10 11:31:26 [botocore.hooks] DEBUG: Event choose-signer.s3.PutObject: calling handler 2026-08-10 11:31:26 [botocore.hooks] DEBUG: Event before-sign.s3.PutObject: calling handler 2026-08-10 11:31:26 [botocore.hooks] DEBUG: Event before-sign.s3.PutObject: calling handler > 2026-08-10 11:31:26 [botocore.auth] DEBUG: Calculating signature using v4 auth. 2026-08-10 11:31:26 [botocore.auth] DEBUG: CanonicalRequest: PUT /dagster-output-data/vietnamnet_timestamp/vietnamnet_timestamp_d75bfaaa94ae11f1b41882b496cd12ce_scheduled_2026-08-10.jl content-md5:1B2M2Y8AsgTpgAmY7PhCfg== host:lake-api.actable.ai x-amz-content-sha256:UNSIGNED-PAYLOAD x-amz-date:20260810T113126Z content-md5;host;x-amz-content-sha256;x-amz-date UNSIGNED-PAYLOAD 2026-08-10 11:31:26 [botocore.auth] DEBUG: StringToSign: AWS4-HMAC-SHA256 20260810T113126Z 20260810/us-east-1/s3/aws4_request 3cf6f4d03b521156daa9ae2b6b785321979a7fbdc2b571fc73fa0b373a662b02 2026-08-10 11:31:26 [botocore.auth] DEBUG: Signature: a961e1876f66058c79757f3a1b1f01aebc89ea5abb469bc3db91d6cdae02a357 2026-08-10 11:31:26 [botocore.hooks] DEBUG: Event request-created.s3.PutObject: calling handler 2026-08-10 11:31:26 [botocore.hooks] DEBUG: Event request-created.s3.PutObject: calling handler 2026-08-10 11:31:26 [botocore.endpoint] DEBUG: Sending http request: 2026-08-10 11:31:26 [botocore.httpsession] DEBUG: Certificate path: /usr/local/lib/python3.11/site-packages/certifi/cacert.pem 2026-08-10 11:31:26 [urllib3.connectionpool] DEBUG: Starting new HTTPS connection (1): lake-api.actable.ai:443 2026-08-10 11:31:26 [botocore.awsrequest] DEBUG: Waiting for 100 Continue response. 2026-08-10 11:31:26 [botocore.awsrequest] DEBUG: 100 Continue response seen, now sending request body. 2026-08-10 11:31:26 [urllib3.connectionpool] DEBUG: https://lake-api.actable.ai:443 "PUT /dagster-output-data/vietnamnet_timestamp/vietnamnet_timestamp_d75bfaaa94ae11f1b41882b496cd12ce_scheduled_2026-08-10.jl HTTP/1.1" 200 0 2026-08-10 11:31:26 [botocore.parsers] DEBUG: Response headers: {'Server': 'nginx/1.18.0 (Ubuntu)', 'Date': 'Mon, 10 Aug 2026 11:31:26 GMT', 'Content-Length': '0', 'Connection': 'keep-alive', 'Accept-Ranges': 'bytes', 'ETag': '"d41d8cd98f00b204e9800998ecf8427e"', 'Strict-Transport-Security': 'max-age=31536000; includeSubDomains', 'Vary': 'Origin, Accept-Encoding', 'X-Amz-Bucket-Region': 'us-east-1', 'X-Amz-Id-2': 'dd9025bab4ad464b049177c95eb6ebf374d3b3fd1af9251148b658df7ac2e3e8', 'X-Amz-Request-Id': '18CA6E4EC9A4A216', 'X-Content-Type-Options': 'nosniff', 'X-Ratelimit-Limit': '3162', 'X-Ratelimit-Remaining': '3162', 'X-Xss-Protection': '1; mode=block'} 2026-08-10 11:31:26 [botocore.parsers] DEBUG: Response body: b'' 2026-08-10 11:31:26 [botocore.hooks] DEBUG: Event needs-retry.s3.PutObject: calling handler 2026-08-10 11:31:26 [botocore.retryhandler] DEBUG: No retry needed. 2026-08-10 11:31:26 [botocore.hooks] DEBUG: Event needs-retry.s3.PutObject: calling handler > 2026-08-10 11:31:26 [s3transfer.utils] DEBUG: Releasing acquire 0/None 2026-08-10 11:31:26 [scrapy.extensions.feedexport] INFO: Stored jsonlines feed (0 items) in: s3://dagster-output-data/vietnamnet_timestamp/vietnamnet_timestamp_d75bfaaa94ae11f1b41882b496cd12ce_scheduled_2026-08-10.jl 2026-08-10 11:31:26 [scrapy.statscollectors] INFO: Dumping Scrapy stats: {'downloader/request_bytes': 9988, 'downloader/request_count': 28, 'downloader/request_method_count/GET': 28, 'downloader/response_bytes': 3927720, 'downloader/response_count': 28, 'downloader/response_status_count/200': 28, 'elapsed_time_seconds': 74.792552, 'feedexport/success_count/S3FeedStorage': 1, 'finish_reason': 'finished', 'finish_time': datetime.datetime(2026, 8, 10, 11, 31, 26, 706122, tzinfo=datetime.timezone.utc), 'log_count/DEBUG': 192, 'log_count/ERROR': 1, 'log_count/INFO': 42, 'memusage/max': 138579968, 'memusage/startup': 124166144, 'request_depth_max': 2, 'response_received_count': 28, 'robotstxt/request_count': 1, 'robotstxt/response_count': 1, 'robotstxt/response_status_count/200': 1, 'scheduler/dequeued': 27, 'scheduler/dequeued/memory': 27, 'scheduler/enqueued': 27, 'scheduler/enqueued/memory': 27, 'spider_exceptions/RateLimitError': 1, 'start_time': datetime.datetime(2026, 8, 10, 11, 30, 11, 913570, tzinfo=datetime.timezone.utc)} 2026-08-10 11:31:26 [scrapy.core.engine] INFO: Spider closed (finished) 2026-08-10 11:31:27 [httpcore.connection] DEBUG: close.started 2026-08-10 11:31:27 [httpcore.connection] DEBUG: close.complete