将文件存储到 S3 在 Celery 工作线程中不起作用

问题描述 投票:0回答:1

我面临着从 django 的 celery 任务将文件存储在 S3 中的问题。我正在做以下事情

  • 从数据库获取数据
  • 使用 BytesIO 创建 XLSX 文件
  • 使用 Django 的
    file.save
    方法存储该文件

代码片段

        try:
            excel_file = generate_xlsx_file(sheet_dfs)
        except Exception as e:
            logger.exception("Error while generating excel file")
            return

        # Save the report
        report = Report.objects.create()

        file_name = generate_file_name()

        # Save the file
        report.file.save(file_name, ContentFile(excel_file))

在最后一行,芹菜工人只是停止并且不处理任何其他任务。 如果我在 django shell 中运行这段代码,它也可以正常工作

django amazon-s3 celery django-celery python-django-storages
1个回答
0
投票

所以问题是 eventlet,我用 eventlet 运行 celery 工作人员并删除它们解决了问题。我在这个答案中找到了解决方法: 带有 Eventlet 的 Celery 在上传到 s3 (boto3) 时失败

© www.soinside.com 2019 - 2024. All rights reserved.