🔍 Overview
This document describes the Celery tasks that initiate Google Search Console appeals via the external gsc-gui-tools service.
The tasks create and update GSC request models:
DomainAppealRequest— appeal for blocked domains (links + tracking domains)
⏱ Schedule (Celery Beat)
Configured in config/settings.py:
schedule_domain_appeals_task— everyAPPEAL_SENDER_INTERVALsecondscheck_backups_via_gsb_and_send_appeals_task— every 12 hours at minute30
📝 Task Definitions
@celery.task
def schedule_domain_appeals_task():
domains_map = Link.get_blocked_by_google_domains_map()
tracking_domains_map = TrackingDomainPipeline.get_blocked_domains_map()
for map in (domains_map, tracking_domains_map):
for domain, owners in map.items():
for owner in owners:
if not DomainAppealRequest.can_send_appeal(domain, owner.id):
continue
send_appeal_task.delay(domain, owner.id)
@celery.task
def check_backups_via_gsb_and_send_appeals_task():
domain_map = Link.get_domains_map(status=LinkStatuses.BACKUP)
for chunk_domains in chunked(list(domain_map.keys())):
unsafe_domains = GoogleSafeBrowsing.check_links(chunk_domains)
if unsafe_domains is None or len(unsafe_domains) == 0:
continue
for unsafe_domain in unsafe_domains.keys():
unsafe_root_domain = extract_root_domain(unsafe_domain)
links = domain_map.get(unsafe_domain, [])
owner = links[0].owner
if not DomainAppealRequest.can_send_appeal(unsafe_root_domain, owner.id):
continue
send_appeal_task.delay(unsafe_root_domain, owner.id)
TelegramSender.send_backup_domain_unsafe_message(unsafe_domain, owner)
@celery.task
def send_appeal_task(domain: str, owner_id: int, force: bool = False):
owner = UserModel.objects.get(id=owner_id)
if not DomainAppealRequest.can_send_appeal(domain, owner_id) and not force:
return
DomainAppealRequest.init_domain_appeal(domain, owner)⚙️ Task Behavior & Flow
-
Appeals for blocked domains
- Collects blocked root domains from Links and Tracking Domain Pipelines.
- For each
(domain, owner)pair, checks cooldown viaDomainAppealRequest.can_send_appeal(...). - Enqueues
send_appeal_task.
-
Appeals for unsafe backup domains
- Checks BACKUP link domains via Google Safe Browsing.
- For each unsafe backup domain, sends an appeal for its root domain.
- Sends a Telegram notification that a backup domain is unsafe (informational only).
-
Sending an appeal
- Creates a
DomainAppealRequestand sends the request to gsc-gui-tools. - The request is later finalized by the callback endpoint (updates
is_sent,finished_at,screenshot_url, etc.).
- Creates a