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 ...
Надеюсь, это поможет.