Предотвращение выполнения async-задачи перед остальным кодом на Django

Пожалуйста, помогите мне здесь. Это мой класс администратора django:

Моя проблема в том, что валидация check_sync_available не работает должным образом, потому что асинхронная задача sync_development (redis/celery) выполняется ДО requests.get, согласно логам, как я могу это предотвратить? Я пытался использовать transactions.oncommit и много других вещей, но ничего не работает.

class CourseAdmin(nested_admin.NestedModelAdmin):
    

    class Meta:
        model = Course
        fields = '__all__'
    
    actions = ["sync_course_development"]

    def sync_course_development(self, modeladmin, request, queryset):        

        api_url = f'https://lalala.lalala.la/check_sync_available/'

        response = requests.get(api_url, headers={'Content-Type': 'application/json'})
        if response.status_code != 200:
            modeladmin.message_user(request, f'A sync is already in progress, try again later.', messages.ERROR)
            return None
        else:
            print(f"Sync available: {response.status_code}")

        for course in queryset:
            sync_development.apply_async([course.id])
        
        modeladmin.message_user(request, f'Courses syncing in background. Please reload the page in a while.', messages.SUCCESS)

Вот журнал, чтобы вы могли видеть, о чем я говорю.

Jun 12 18:31:59 ip-xxx-xx-xx-xx celery_worker: [2024-06-12 18:31:59,694: WARNING/ForkPoolWorker-7] Point 765/3802 - Percentage: 19.89245930284848
Jun 12 18:31:59 ip-xxx-xx-xx-xx celery_worker: [2024-06-12 18:31:59,696: WARNING/ForkPoolWorker-7] Point 766/3802 - Percentage: 19.91905538924079
Jun 12 18:31:59 ip-xxx-xx-xx-xx celery_worker: [2024-06-12 18:31:59,698: WARNING/ForkPoolWorker-7] Point 767/3802 - Percentage: 19.945522992123962
Jun 12 18:31:59 ip-xxx-xx-xx-xx web: [2024-06-12 18:31:59 +0000] [5952] [INFO] Booting worker with pid: 5952
Jun 12 18:32:01 ip-xxx-xx-xx-xx web: [2024-06-12 18:32:01 +0000] [5906] [INFO] Autorestarting worker after current request.
Jun 12 18:32:02 ip-xxx-xx-xx-xx web: [2024-06-12 18:32:02 +0000] [5906] [INFO] Worker exiting (pid: 5906)
Jun 12 18:32:02 ip-xxx-xx-xx-xx web: Loading environment variables
Jun 12 18:32:02 ip-xxx-xx-xx-xx web: Creating Course - Course Name
Jun 12 18:32:02 ip-xxx-xx-xx-xx web: Index Current: 1
Jun 12 18:32:02 ip-xxx-xx-xx-xx web: Index Total: 1
Jun 12 18:32:02 ip-xxx-xx-xx-xx web: Keys deleted
Jun 12 18:32:02 ip-xxx-xx-xx-xx web: Sync completed

Точка 767/3802 - Процент: 19.945522992123962 происходит внутри sync_development, а Создание курса - Название курса происходит внутри check_sync_available.

Большое спасибо.

Вернуться на верх