---
title: "异步任务处理"
type: concept
tags: [async, task-queue, django-q]
sources: [tiktok-pm-python-django-project.md]
last_updated: 2026-04-14
---

## Definition
异步任务处理将耗时的操作（如API调用、数据导入）放到后台任务队列中执行，避免HTTP请求超时。

## Implementation: Django-Q

### Configuration
```python
Q_CLUSTER = {
    'name': 'DjangORM',
    'workers': 4,
    'timeout': 360,
    'retry': 120,
    'queue_limit': 50,
    'orm': 'default',
}
```

### Task Function
```python
from django_q.tasks import async_task

def trigger_bright_data_task(urls_list):
    # 触发Bright Data API
    job_id = trigger_bright_data_api(urls_list)
    # 异步轮询结果
    async_task('products.tasks.poll_bright_data_result', job_id)
    return job_id

def poll_bright_data_result(job_id):
    # 轮询直到任务完成
    while True:
        status = check_job_status(job_id)
        if status == 'completed':
            download_and_import_data()
            break
        time.sleep(30)
```

### Worker
启动后台worker处理异步任务：
```bash
docker compose exec web python manage.py qcluster
```

## Bright Data Integration
- 触发异步任务获取job_id
- 每30秒轮询任务状态
- 任务完成后下载JSON数据并导入数据库

## Connections
- [[异步任务处理]] ← uses ← [[Django]]
- [[异步任务处理]] ← calls ← [[Bright Data]]
- [[异步任务处理]] ← runs_in ← [[Docker容器化部署]]
