Browse Source

try

pull/2430/head
Rox0z 3 months ago
parent
commit
72971f008f
2 changed files with 49 additions and 18 deletions
  1. 48
      backend/config/settings/base.py
  2. 19
      frontend/repositories/upload/apiParseRepository.ts

48
backend/config/settings/base.py

@ -263,13 +263,28 @@ if not EMAIL_HOST:
MEDIA_ROOT = env("MEDIA_ROOT", path.join(BASE_DIR, "media"))
MEDIA_URL = "/media/"
# Filepond settings
# Ensure media directory exists
import os
if not os.path.exists(MEDIA_ROOT):
os.makedirs(MEDIA_ROOT, exist_ok=True)
# Filepond settings - place this AFTER MEDIA_ROOT definition
DJANGO_DRF_FILEPOND_UPLOAD_TMP = path.join(BASE_DIR, "filepond-temp-uploads")
DJANGO_DRF_FILEPOND_FILE_STORE_PATH = MEDIA_ROOT
DJANGO_DRF_FILEPOND_FILE_STORE_PATH = MEDIA_ROOT # This ensures the path is available
# Ensure filepond temp directory exists
if not os.path.exists(DJANGO_DRF_FILEPOND_UPLOAD_TMP):
os.makedirs(DJANGO_DRF_FILEPOND_UPLOAD_TMP, exist_ok=True)
# File upload setting
MAX_UPLOAD_SIZE = env.int("MAX_UPLOAD_SIZE", pow(1024, 3)) # default: 1GB per a file
ENABLE_FILE_TYPE_CHECK = env.bool("ENABLE_FILE_TYPE_CHECK", False)
# Add temporary file handling settings
FILE_UPLOAD_HANDLERS = [
'django.core.files.uploadhandler.MemoryFileUploadHandler',
'django.core.files.uploadhandler.TemporaryFileUploadHandler',
]
FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440 # 2.5 MB
# Celery settings
DJANGO_CELERY_RESULTS_TASK_ID_MAX_LENGTH = 191
@ -289,29 +304,32 @@ except EnvError:
CELERY_ACCEPT_CONTENT = ["application/json"]
CELERY_TASK_SERIALIZER = "json"
CELERY_RESULT_SERIALIZER = "json"
CELERY_TASK_TIME_LIMIT = 600 # Add timeout for tasks
CELERY_TASK_SOFT_TIME_LIMIT = 500
# Fix for macOS Celery fork() issue
# Fix for Windows and macOS Celery issues
import os
import platform
if platform.system() == 'Darwin': # macOS
os.environ['OBJC_DISABLE_INITIALIZE_FORK_SAFETY'] = 'YES'
elif platform.system() == 'Windows': # Windows
# Windows-specific settings
os.environ['FORKED_BY_MULTIPROCESSING'] = '1'
# Configure Celery to use 'spawn' instead of 'fork' on macOS
# Configure Celery worker settings
CELERY_WORKER_CONCURRENCY = env.int('CELERY_WORKER_CONCURRENCY', 2)
if platform.system() == 'Darwin':
CELERY_TASK_CREATE_MISSING_QUEUES = True
CELERY_WORKER_MAX_TASKS_PER_CHILD = 1000
CELERY_WORKER_PREFETCH_MULTIPLIER = 1
CELERY_WORKER_FORCE_EXECV = True
# Make Celery explicitly use spawn method on macOS
CELERY_WORKER_POOL = 'solo' # Use 'solo' pool to avoid forking issues
# SQLAlchemy broker options (remove incompatible options)
# CELERY_BROKER_TRANSPORT_OPTIONS = {'visibility_timeout': 3600} # Remove this line
CELERY_TASK_CREATE_MISSING_QUEUES = True
CELERY_WORKER_MAX_TASKS_PER_CHILD = 1000
CELERY_WORKER_PREFETCH_MULTIPLIER = 1
CELERY_WORKER_FORCE_EXECV = True
# Use appropriate pool based on platform
if platform.system() in ['Darwin', 'Windows']:
CELERY_WORKER_POOL = 'solo' # Use 'solo' pool to avoid forking issues on macOS and Windows
# Also set these for command-line options
import multiprocessing
multiprocessing.set_start_method('spawn')
multiprocessing.set_start_method('spawn', force=True)
DEFAULT_AUTO_FIELD = "django.db.models.AutoField"

19
frontend/repositories/upload/apiParseRepository.ts

@ -17,12 +17,25 @@ export class APIParseRepository {
uploadIds,
...option
}
const response = await this.request.post(url, data)
return response.data.task_id
// Add timeout and error handling
try {
const response = await this.request.post(url, data, {
timeout: 60000, // 60 seconds timeout
})
return response.data.task_id
} catch (error) {
console.error('Upload analysis error:', error)
throw error
}
}
revert(serverId: string): void {
const url = `/fp/revert/`
this.request.delete(url, { data: serverId })
// Use proper format for DELETE request
try {
this.request.delete(url, { data: { id: serverId } })
} catch (error) {
console.error('Revert error:', error)
}
}
}
Loading…
Cancel
Save