2026-09-14 15:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 16:00:00 UTC)" (scheduled at 2026-09-14 15:00:00+00:00) 2026-09-14 15:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-14 15:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 15:00:01,486 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 15:00:01,487 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 15:00:01,491 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 15:00:01,491 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 15:00:01,548 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 15:00:01,636 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 15:00:01,637 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 16:00:00 UTC)" executed successfully 2026-09-14 16:00:00,003 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 17:00:00 UTC)" (scheduled at 2026-09-14 16:00:00+00:00) 2026-09-14 16:00:00,005 INFO [fb-sync] Starting FB sync... 2026-09-14 16:00:00,070 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 16:00:01,242 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 16:00:01,244 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 16:00:01,247 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 16:00:01,247 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 16:00:01,310 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 16:00:01,362 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 16:00:01,362 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 17:00:00 UTC)" executed successfully 2026-09-14 17:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 18:00:00 UTC)" (scheduled at 2026-09-14 17:00:00+00:00) 2026-09-14 17:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-14 17:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 17:00:01,393 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 17:00:01,396 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 17:00:01,399 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 17:00:01,400 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 17:00:01,462 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 17:00:01,524 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 17:00:01,524 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 18:00:00 UTC)" executed successfully 2026-09-14 18:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 19:00:00 UTC)" (scheduled at 2026-09-14 18:00:00+00:00) 2026-09-14 18:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-14 18:00:00,089 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 18:00:01,568 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 18:00:01,569 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 18:00:01,572 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 18:00:01,572 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 18:00:01,620 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 18:00:01,686 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 18:00:01,686 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 19:00:00 UTC)" executed successfully 2026-09-14 19:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 20:00:00 UTC)" (scheduled at 2026-09-14 19:00:00+00:00) 2026-09-14 19:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-14 19:00:00,072 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 19:00:01,298 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 19:00:01,299 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 19:00:01,302 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 19:00:01,302 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 19:00:01,369 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 19:00:01,440 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 19:00:01,440 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 20:00:00 UTC)" executed successfully 2026-09-14 20:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 21:00:00 UTC)" (scheduled at 2026-09-14 20:00:00+00:00) 2026-09-14 20:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-14 20:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 20:00:01,419 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 20:00:01,420 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 20:00:01,425 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 20:00:01,425 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 20:00:01,483 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 20:00:01,539 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 20:00:01,540 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 21:00:00 UTC)" executed successfully 2026-09-14 21:00:00,011 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 22:00:00 UTC)" (scheduled at 2026-09-14 21:00:00+00:00) 2026-09-14 21:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-14 21:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 21:00:02,104 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 21:00:02,106 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 21:00:02,110 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 21:00:02,110 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 21:00:02,180 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 21:00:02,258 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 21:00:02,258 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 22:00:00 UTC)" executed successfully 2026-09-14 22:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 23:00:00 UTC)" (scheduled at 2026-09-14 22:00:00+00:00) 2026-09-14 22:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-14 22:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 22:00:02,051 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 22:00:02,053 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 22:00:02,056 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 22:00:02,057 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 22:00:02,124 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 22:00:02,203 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 22:00:02,204 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-14 23:00:00 UTC)" executed successfully 2026-09-14 23:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 00:00:00 UTC)" (scheduled at 2026-09-14 23:00:00+00:00) 2026-09-14 23:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-14 23:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-14 23:00:02,441 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-14 23:00:02,443 INFO [fb-sync.worker] Scraped 50 posts 2026-09-14 23:00:02,446 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-14 23:00:02,446 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-14 23:00:02,505 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-14 23:00:02,571 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-14 23:00:02,571 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 00:00:00 UTC)" executed successfully 2026-09-15 00:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 01:00:00 UTC)" (scheduled at 2026-09-15 00:00:00+00:00) 2026-09-15 00:00:00,005 INFO [fb-sync] Starting FB sync... 2026-09-15 00:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 00:00:01,206 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 00:00:01,208 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 00:00:01,211 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 00:00:01,212 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 00:00:01,281 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 00:00:01,360 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 00:00:01,360 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 01:00:00 UTC)" executed successfully 2026-09-15 01:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 02:00:00 UTC)" (scheduled at 2026-09-15 01:00:00+00:00) 2026-09-15 01:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-15 01:00:00,063 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 01:00:01,203 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 01:00:01,205 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 01:00:01,209 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 01:00:01,209 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 01:00:01,264 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 01:00:01,359 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 01:00:01,360 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 02:00:00 UTC)" executed successfully 2026-09-15 02:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 03:00:00 UTC)" (scheduled at 2026-09-15 02:00:00+00:00) 2026-09-15 02:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-15 02:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 02:00:01,154 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 02:00:01,155 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 02:00:01,159 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 02:00:01,159 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 02:00:01,224 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 02:00:01,285 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 02:00:01,285 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 03:00:00 UTC)" executed successfully 2026-09-15 03:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 04:00:00 UTC)" (scheduled at 2026-09-15 03:00:00+00:00) 2026-09-15 03:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-15 03:00:00,068 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 03:00:01,160 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 03:00:01,162 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 03:00:01,166 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 03:00:01,166 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 03:00:01,246 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 03:00:01,327 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 03:00:01,328 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 04:00:00 UTC)" executed successfully 2026-09-15 04:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 05:00:00 UTC)" (scheduled at 2026-09-15 04:00:00+00:00) 2026-09-15 04:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-15 04:00:00,104 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 04:00:01,361 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 04:00:01,363 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 04:00:01,368 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 04:00:01,368 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 04:00:01,424 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 04:00:01,481 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 04:00:01,481 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 05:00:00 UTC)" executed successfully 2026-09-15 05:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 06:00:00 UTC)" (scheduled at 2026-09-15 05:00:00+00:00) 2026-09-15 05:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-15 05:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 05:00:01,190 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 05:00:01,192 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 05:00:01,195 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 05:00:01,195 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 05:00:01,256 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 05:00:01,318 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 05:00:01,319 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 06:00:00 UTC)" executed successfully 2026-09-15 06:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 07:00:00 UTC)" (scheduled at 2026-09-15 06:00:00+00:00) 2026-09-15 06:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-15 06:00:00,085 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 06:00:01,225 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 06:00:01,226 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 06:00:01,230 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 06:00:01,230 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 06:00:01,279 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 06:00:01,336 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 06:00:01,336 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 07:00:00 UTC)" executed successfully 2026-09-15 07:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 08:00:00 UTC)" (scheduled at 2026-09-15 07:00:00+00:00) 2026-09-15 07:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-15 07:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 07:00:01,544 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 07:00:01,546 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 07:00:01,548 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 07:00:01,549 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 07:00:01,614 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 07:00:01,707 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 07:00:01,707 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 08:00:00 UTC)" executed successfully 2026-09-15 08:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 09:00:00 UTC)" (scheduled at 2026-09-15 08:00:00+00:00) 2026-09-15 08:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-15 08:00:00,087 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 08:00:01,344 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 08:00:01,347 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 08:00:01,350 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 08:00:01,351 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 08:00:01,414 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 08:00:01,477 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 08:00:01,478 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 09:00:00 UTC)" executed successfully 2026-09-15 09:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 10:00:00 UTC)" (scheduled at 2026-09-15 09:00:00+00:00) 2026-09-15 09:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-15 09:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 09:00:01,151 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 09:00:01,154 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 09:00:01,158 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 09:00:01,158 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 09:00:01,234 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 09:00:01,307 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 09:00:01,307 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 10:00:00 UTC)" executed successfully 2026-09-15 10:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 11:00:00 UTC)" (scheduled at 2026-09-15 10:00:00+00:00) 2026-09-15 10:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-15 10:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 10:00:01,458 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 10:00:01,462 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 10:00:01,466 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 10:00:01,467 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 10:00:01,555 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 10:00:01,643 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 10:00:01,643 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 11:00:00 UTC)" executed successfully 2026-09-15 11:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 12:00:00 UTC)" (scheduled at 2026-09-15 11:00:00+00:00) 2026-09-15 11:00:00,006 INFO [fb-sync] Starting FB sync... 2026-09-15 11:00:00,066 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 11:00:01,207 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 11:00:01,211 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 11:00:01,216 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 11:00:01,216 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 11:00:01,281 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 11:00:01,355 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 11:00:01,355 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 12:00:00 UTC)" executed successfully 2026-09-15 12:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 13:00:00 UTC)" (scheduled at 2026-09-15 12:00:00+00:00) 2026-09-15 12:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-15 12:00:00,065 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 12:00:01,292 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 12:00:01,294 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 12:00:01,298 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 12:00:01,298 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 12:00:01,363 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 12:00:01,440 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 12:00:01,440 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 13:00:00 UTC)" executed successfully 2026-09-15 13:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 14:00:00 UTC)" (scheduled at 2026-09-15 13:00:00+00:00) 2026-09-15 13:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-15 13:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 13:00:01,374 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 13:00:01,376 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 13:00:01,379 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 13:00:01,379 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 13:00:01,443 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 13:00:01,493 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 13:00:01,493 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 14:00:00 UTC)" executed successfully 2026-09-15 14:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 15:00:00 UTC)" (scheduled at 2026-09-15 14:00:00+00:00) 2026-09-15 14:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-15 14:00:00,073 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 14:00:01,301 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 14:00:01,303 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 14:00:01,308 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 14:00:01,308 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 14:00:01,391 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 14:00:01,478 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 14:00:01,479 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 15:00:00 UTC)" executed successfully 2026-09-15 15:00:00,011 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 16:00:00 UTC)" (scheduled at 2026-09-15 15:00:00+00:00) 2026-09-15 15:00:00,015 INFO [fb-sync] Starting FB sync... 2026-09-15 15:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 15:00:01,485 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 15:00:01,487 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 15:00:01,489 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 15:00:01,489 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 15:00:01,544 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 15:00:01,603 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 15:00:01,603 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 16:00:00 UTC)" executed successfully 2026-09-15 16:00:00,006 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 17:00:00 UTC)" (scheduled at 2026-09-15 16:00:00+00:00) 2026-09-15 16:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-15 16:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 16:00:01,353 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 16:00:01,355 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 16:00:01,357 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 16:00:01,357 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 16:00:01,409 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 16:00:01,469 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 16:00:01,470 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 17:00:00 UTC)" executed successfully 2026-09-15 17:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 18:00:00 UTC)" (scheduled at 2026-09-15 17:00:00+00:00) 2026-09-15 17:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-15 17:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 17:00:01,487 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 17:00:01,489 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 17:00:01,492 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 17:00:01,492 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 17:00:01,552 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 17:00:01,626 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 17:00:01,627 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 18:00:00 UTC)" executed successfully 2026-09-15 18:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 19:00:00 UTC)" (scheduled at 2026-09-15 18:00:00+00:00) 2026-09-15 18:00:00,015 INFO [fb-sync] Starting FB sync... 2026-09-15 18:00:00,099 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 18:00:01,368 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 18:00:01,370 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 18:00:01,373 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 18:00:01,373 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 18:00:01,441 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 18:00:01,516 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 18:00:01,516 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 19:00:00 UTC)" executed successfully 2026-09-15 19:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 20:00:00 UTC)" (scheduled at 2026-09-15 19:00:00+00:00) 2026-09-15 19:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-15 19:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 19:00:01,311 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 19:00:01,312 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 19:00:01,316 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 19:00:01,316 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 19:00:01,381 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 19:00:01,442 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 19:00:01,442 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 20:00:00 UTC)" executed successfully 2026-09-15 20:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 21:00:00 UTC)" (scheduled at 2026-09-15 20:00:00+00:00) 2026-09-15 20:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-15 20:00:00,069 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 20:00:01,214 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 20:00:01,216 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 20:00:01,219 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 20:00:01,219 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 20:00:01,263 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 20:00:01,309 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 20:00:01,309 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 21:00:00 UTC)" executed successfully 2026-09-15 21:00:00,005 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 22:00:00 UTC)" (scheduled at 2026-09-15 21:00:00+00:00) 2026-09-15 21:00:00,007 INFO [fb-sync] Starting FB sync... 2026-09-15 21:00:00,074 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 21:00:01,307 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 21:00:01,309 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 21:00:01,312 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 21:00:01,313 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 21:00:01,373 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 21:00:01,439 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 21:00:01,440 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 22:00:00 UTC)" executed successfully 2026-09-15 22:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 23:00:00 UTC)" (scheduled at 2026-09-15 22:00:00+00:00) 2026-09-15 22:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-15 22:00:00,080 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 22:00:01,994 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 22:00:01,996 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 22:00:01,999 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 22:00:01,999 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 22:00:02,050 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 22:00:02,119 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 22:00:02,119 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-15 23:00:00 UTC)" executed successfully 2026-09-15 23:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 00:00:00 UTC)" (scheduled at 2026-09-15 23:00:00+00:00) 2026-09-15 23:00:00,008 INFO [fb-sync] Starting FB sync... 2026-09-15 23:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-15 23:00:02,026 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-15 23:00:02,028 INFO [fb-sync.worker] Scraped 50 posts 2026-09-15 23:00:02,032 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-15 23:00:02,032 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-15 23:00:02,154 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-15 23:00:02,248 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-15 23:00:02,249 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 00:00:00 UTC)" executed successfully 2026-09-16 00:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 01:00:00 UTC)" (scheduled at 2026-09-16 00:00:00+00:00) 2026-09-16 00:00:00,015 INFO [fb-sync] Starting FB sync... 2026-09-16 00:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 00:00:01,167 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 00:00:01,170 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 00:00:01,173 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 00:00:01,173 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 00:00:01,277 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 00:00:01,374 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 00:00:01,375 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 01:00:00 UTC)" executed successfully 2026-09-16 01:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 02:00:00 UTC)" (scheduled at 2026-09-16 01:00:00+00:00) 2026-09-16 01:00:00,010 INFO [fb-sync] Starting FB sync... 2026-09-16 01:00:00,075 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 01:00:01,323 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 01:00:01,324 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 01:00:01,327 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 01:00:01,327 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 01:00:01,389 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 01:00:01,479 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 01:00:01,479 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 02:00:00 UTC)" executed successfully 2026-09-16 02:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 03:00:00 UTC)" (scheduled at 2026-09-16 02:00:00+00:00) 2026-09-16 02:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-16 02:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 02:00:01,302 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 02:00:01,304 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 02:00:01,307 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 02:00:01,308 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 02:00:01,364 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 02:00:01,432 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 02:00:01,433 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 03:00:00 UTC)" executed successfully 2026-09-16 03:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 04:00:00 UTC)" (scheduled at 2026-09-16 03:00:00+00:00) 2026-09-16 03:00:00,013 INFO [fb-sync] Starting FB sync... 2026-09-16 03:00:00,092 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 03:00:01,398 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 03:00:01,400 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 03:00:01,403 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 03:00:01,403 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 03:00:01,458 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 03:00:01,534 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 03:00:01,534 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 04:00:00 UTC)" executed successfully 2026-09-16 04:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 05:00:00 UTC)" (scheduled at 2026-09-16 04:00:00+00:00) 2026-09-16 04:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-16 04:00:00,092 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 04:00:01,379 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 04:00:01,381 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 04:00:01,382 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 04:00:01,382 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 04:00:01,482 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 04:00:01,557 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 04:00:01,558 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 05:00:00 UTC)" executed successfully 2026-09-16 05:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 06:00:00 UTC)" (scheduled at 2026-09-16 05:00:00+00:00) 2026-09-16 05:00:00,015 INFO [fb-sync] Starting FB sync... 2026-09-16 05:00:00,084 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 05:00:01,195 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 05:00:01,198 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 05:00:01,201 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 05:00:01,202 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 05:00:01,266 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 05:00:01,544 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 05:00:01,545 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 06:00:00 UTC)" executed successfully 2026-09-16 06:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 07:00:00 UTC)" (scheduled at 2026-09-16 06:00:00+00:00) 2026-09-16 06:00:00,009 INFO [fb-sync] Starting FB sync... 2026-09-16 06:00:00,076 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 06:00:01,727 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 06:00:01,729 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 06:00:01,732 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 06:00:01,733 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 06:00:01,795 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 06:00:01,867 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 06:00:01,867 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 07:00:00 UTC)" executed successfully 2026-09-16 07:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 08:00:00 UTC)" (scheduled at 2026-09-16 07:00:00+00:00) 2026-09-16 07:00:00,007 INFO [fb-sync] Starting FB sync... 2026-09-16 07:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 07:00:01,548 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 07:00:01,550 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 07:00:01,553 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 07:00:01,554 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 07:00:01,635 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 07:00:01,719 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 07:00:01,719 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 08:00:00 UTC)" executed successfully 2026-09-16 08:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 09:00:00 UTC)" (scheduled at 2026-09-16 08:00:00+00:00) 2026-09-16 08:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-16 08:00:00,078 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 08:00:02,172 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 08:00:02,173 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 08:00:02,176 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 08:00:02,176 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 08:00:02,219 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 08:00:02,271 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 08:00:02,271 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 09:00:00 UTC)" executed successfully 2026-09-16 09:00:00,010 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 10:00:00 UTC)" (scheduled at 2026-09-16 09:00:00+00:00) 2026-09-16 09:00:00,014 INFO [fb-sync] Starting FB sync... 2026-09-16 09:00:00,082 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 09:00:01,405 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 09:00:01,407 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 09:00:01,411 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 09:00:01,411 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 09:00:01,479 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 09:00:01,544 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 09:00:01,544 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 10:00:00 UTC)" executed successfully 2026-09-16 10:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 11:00:00 UTC)" (scheduled at 2026-09-16 10:00:00+00:00) 2026-09-16 10:00:00,007 INFO [fb-sync] Starting FB sync... 2026-09-16 10:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 10:00:01,858 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 10:00:01,861 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 10:00:01,865 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 10:00:01,866 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 10:00:01,933 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 10:00:02,010 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 10:00:02,010 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 11:00:00 UTC)" executed successfully 2026-09-16 11:00:00,013 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 12:00:00 UTC)" (scheduled at 2026-09-16 11:00:00+00:00) 2026-09-16 11:00:00,015 INFO [fb-sync] Starting FB sync... 2026-09-16 11:00:00,086 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 11:00:01,464 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 11:00:01,466 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 11:00:01,470 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 11:00:01,470 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 11:00:01,546 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 11:00:01,621 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 11:00:01,622 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 12:00:00 UTC)" executed successfully 2026-09-16 12:00:00,008 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 13:00:00 UTC)" (scheduled at 2026-09-16 12:00:00+00:00) 2026-09-16 12:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-16 12:00:00,081 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 12:00:01,374 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 12:00:01,376 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 12:00:01,380 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 12:00:01,380 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 12:00:01,455 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 12:00:01,529 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 12:00:01,529 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 13:00:00 UTC)" executed successfully 2026-09-16 13:00:00,004 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 14:00:00 UTC)" (scheduled at 2026-09-16 13:00:00+00:00) 2026-09-16 13:00:00,007 INFO [fb-sync] Starting FB sync... 2026-09-16 13:00:00,088 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 13:00:01,279 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 13:00:01,280 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 13:00:01,282 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 13:00:01,282 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 13:00:01,348 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 13:00:01,418 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 13:00:01,418 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 14:00:00 UTC)" executed successfully 2026-09-16 14:00:00,009 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 15:00:00 UTC)" (scheduled at 2026-09-16 14:00:00+00:00) 2026-09-16 14:00:00,011 INFO [fb-sync] Starting FB sync... 2026-09-16 14:00:00,077 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 14:00:01,319 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 14:00:01,320 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 14:00:01,324 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 14:00:01,324 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 14:00:01,384 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 14:00:01,459 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 14:00:01,460 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 15:00:00 UTC)" executed successfully 2026-09-16 15:00:00,002 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 16:00:00 UTC)" (scheduled at 2026-09-16 15:00:00+00:00) 2026-09-16 15:00:00,004 INFO [fb-sync] Starting FB sync... 2026-09-16 15:00:00,067 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 15:00:01,532 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 15:00:01,535 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 15:00:01,538 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 15:00:01,539 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 15:00:01,616 INFO [fb-sync] Sync done: 0 new posts in 2s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 15:00:01,707 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 15:00:01,707 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 16:00:00 UTC)" executed successfully 2026-09-16 16:00:00,007 INFO [apscheduler.executors.default] Running job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 17:00:00 UTC)" (scheduled at 2026-09-16 16:00:00+00:00) 2026-09-16 16:00:00,012 INFO [fb-sync] Starting FB sync... 2026-09-16 16:00:00,083 INFO [fb-sync.worker] Fetching posts via Graph API... 2026-09-16 16:00:01,374 INFO [fb-sync.worker] Graph API returned 50 posts 2026-09-16 16:00:01,376 INFO [fb-sync.worker] Scraped 50 posts 2026-09-16 16:00:01,381 INFO [fb-sync.worker] New articles: 1 | skips: {'duplicate_exact': 49} 2026-09-16 16:00:01,381 INFO [fb-sync.worker] Skip empty body: Chart of the Day 2026-09-16 16:00:01,468 INFO [fb-sync] Sync done: 0 new posts in 1s (source=graph_api, scraped=50, skips={'duplicate_exact': 49, 'empty_body': 1}) 2026-09-16 16:00:01,544 INFO [fb-sync.journal] Retention: dropped 2 record(s) older than 30d 2026-09-16 16:00:01,544 INFO [apscheduler.executors.default] Job "sync_job (trigger: cron[hour='*/1', minute='0'], next run at: 2026-09-16 17:00:00 UTC)" executed successfully