0

I'm having a problem when using celery

I'm handling my upload-file api with celery and sometimes it does not receive the task and my file will not upload into MINIO,

And sometimes it does receive the tasks and the upload is successful.

What can be the problem? And How can we make sure that celery will receive the task?

In the flower monitoring the error says that the task is not registered: NotRegistered('api.tasks.upload_file')

### celery task
    @shared_task
    def upload_file(task_id, image_id, serializer):
        MINIO_CLIENT.fput_object(
            bucket_name="singularity",
            object_name=f"task_{task_id}/images/{image_id}.jpg",
            file_path=serializer.data.get("file_path"),
        )

### models
    class FileUpload(models.Model):
        file = models.FileField()

### serializer
    class UploadFileSerializer(serializers.Serializer):
        file_path = serializers.SerializerMethodField()
        file = serializers.FileField()

        def create(self, validated_data):
            return FileUpload.objects.create(**validated_data)

        def get_file_path(self, obj):
            return obj.file.path

### views
    serializer = self.serializer_class(data=request.data)
    serializer.is_valid(raise_exception=True)
    serializer.save()

    found = MINIO_CLIENT.bucket_exists("some bucket")
    if not found:
        MINIO_CLIENT.make_bucket("some bucket")
    else:
        print("Bucket already exists")
        
    upload_file.delay(task_id, image_id, serializer)
Shayan-9248
  • 11
  • 1
  • 2

0 Answers0