Files
octopus/cleanup_commands.txt

66 lines
1.8 KiB
Plaintext

# Cleanup Commands for Stuck Celery Tasks
## Quick Commands
### 1. Restart Celery Worker (to apply code changes)
```bash
docker restart mix_celery_worker
docker logs -f --tail 50 mix_celery_worker
```
### 2. Run Cleanup Script (Interactive)
```bash
# Copy script to container
docker cp cleanup_stuck_photos.py mix_web:/app/
# Run interactively
docker exec -it mix_web python manage.py shell
>>> exec(open('cleanup_stuck_photos.py').read())
```
### 3. Manual Cleanup (Django Shell)
```bash
docker exec -it mix_web python manage.py shell
```
Then run:
```python
from django.db import connection
from products.models import ProductPhoto, PhotoProcessingStatus
from django.core.files.storage import default_storage
# Activate schema
connection.set_schema('mixflowers')
# Find photo #6
photo = ProductPhoto.objects.get(id=6)
print(f"Photo: {photo}")
print(f"File path: {photo.image.name}")
print(f"File exists: {default_storage.exists(photo.image.name)}")
# Option 1: Delete the record
photo.delete()
# Option 2: Clear the image field (keep record)
# photo.image = None
# photo.save()
# Clean up stuck processing statuses
stuck = PhotoProcessingStatus.objects.filter(status__in=['pending', 'processing'])
print(f"Found {stuck.count()} stuck statuses")
stuck.update(status='failed', error_message='File was deleted before processing')
```
## What Was Fixed
1. **FileNotFoundError handling**: Task now fails immediately instead of retrying when file is missing
2. **File existence check**: Added check before processing to catch missing files early
3. **Status updates**: PhotoProcessingStatus is properly updated to 'failed' when file not found
## Testing
After restarting Celery worker:
1. Upload a new photo - should process normally
2. Check logs - should not see retry loops for missing files
3. Verify stuck tasks are cleaned up