我面临着从 django 的 celery 任务将文件存储在 S3 中的问题。我正在做以下事情
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 中运行这段代码,它也可以正常工作
所以问题是 eventlet,我用 eventlet 运行 celery 工作人员并删除它们解决了问题。我在这个答案中找到了解决方法: 带有 Eventlet 的 Celery 在上传到 s3 (boto3) 时失败