add daily scrape of interesting rent listings

This commit is contained in:
Viktor Barzin 2025-07-25 22:14:45 +00:00
parent 762408e054
commit 272d54d014
No known key found for this signature in database
GPG key ID: 4056458DBDBF8863
2 changed files with 19 additions and 3 deletions

View file

@ -23,7 +23,7 @@ case "$ENV_MODE" in
prod) prod)
echo "🚀 Running in PRODUCTION mode" echo "🚀 Running in PRODUCTION mode"
alembic upgrade head alembic upgrade head
celery -A celery_app worker & celery -A celery_app worker --beat &
CELERY_PID=$! CELERY_PID=$!
;; ;;
*) *)

View file

@ -2,11 +2,10 @@ import asyncio
import importlib import importlib
import logging import logging
from pathlib import Path from pathlib import Path
import time
from typing import Any from typing import Any
from celery import Celery, Task from celery import Celery, Task
from celery_app import app from celery_app import app
from models.listing import Listing, QueryParameters from models.listing import FurnishType, Listing, ListingType, QueryParameters
from repositories.listing_repository import ListingRepository from repositories.listing_repository import ListingRepository
from database import engine from database import engine
from tasks.task_state import TaskStatus from tasks.task_state import TaskStatus
@ -43,3 +42,20 @@ async def dump_listings_full(self: Task, parameters: QueryParameters) -> list[Li
listings = await repository.get_listings(parameters) # this can be better listings = await repository.get_listings(parameters) # this can be better
new_listings = [l for l in listings if l.id in new_listings] new_listings = [l for l in listings if l.id in new_listings]
return new_listings return new_listings
@app.on_after_finalize.connect
def setup_periodic_tasks(sender, **kwargs):
sender.add_periodic_task(
3600 * 24, # Daily updates
name='Daily dump of interesting rent listings',
dump_listings_task.s(
QueryParameters(
listing_type=ListingType.RENT,
min_bedrooms=2,
max_bedrooms=3,
min_price=2000,
max_price=4000,
).model_dump_json()
),
)