feat: implement background scheduler for job scraping with Gunicorn support
This commit is contained in:
@@ -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')
|
||||
|
||||
Reference in New Issue
Block a user