DRF и сельдерей: FileNotFoundError: [Errno 2] Нет такого файла или каталога

На моем локальном развертывании это работает нормально, но на облачном развертывании - нет.

with open(file_path, "wb+") as fp:
    for chunk in file:
        fp.write(chunk)

result = upload.delay(name, file_path)

В другом файле:

@shared_task
def upload(name, file_path):

    path = Path(path_tmp)
    if os.path.isfile(path):
        do something

Ошибка

Не найден путь /mediafiles/rawfiles/file.png", FileNotFoundError: [Errno 2] No such file or directory

Когда я перехожу в докере к -> /mediafiles/rawfiles, файл находится там и имеет размер.

Я использую DRF -> Celery -> Django.

Может кто-нибудь помочь, почему облачное развертывание не может найти файл?

Когда вы делегируете задачу на celery worker с помощью @shared_task и пытаетесь получить доступ к файловой системе, он пытается получить этот файл на рабочей машине. Поэтому вам нужно выполнить эту задачу на машине с файлом или скопировать целевой файл на рабочую машину.

Я добавляю workdir в стартовую команду, тогда он работает хорошо.

celery -A tasks --workdir=. worker ...

Надеюсь, это поможет.

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