feat: implement background scheduler for job scraping with Gunicorn support
Some checks failed
CI/CD Pipeline / test (push) Failing after 13s
CI/CD Pipeline / build-image (push) Has been skipped

This commit is contained in:
2026-01-21 19:07:43 +01:00
parent e8baeb3bcf
commit d84b8f128b
6 changed files with 84 additions and 6 deletions

View File

@@ -39,6 +39,24 @@ class TestScheduler:
from web.craigslist import schedule
assert schedule is not None
@patch('web.craigslist.threading.Thread')
def test_start_scheduler_in_background_idempotent(self, mock_thread):
"""Ensure background scheduler starts only once per process."""
import web.craigslist as craigslist
thread_instance = MagicMock()
thread_instance.is_alive.return_value = True
mock_thread.return_value = thread_instance
craigslist._scheduler_thread = None
first = craigslist.start_scheduler_in_background()
second = craigslist.start_scheduler_in_background()
assert first is second
mock_thread.assert_called_once()
thread_instance.start.assert_called_once()
@patch('web.craigslist.db_get_all_job_urls')
@patch('web.craigslist.seed_regions_keywords_from_listings')
@patch('web.craigslist.get_all_regions')