【发布时间】:2017-11-06 15:23:47
【问题描述】:
我有一个过程,其中网络服务器注入文件(通过上传),使用 default_storages 将该文件保存到 S3,然后为该文件创建一个任务,以通过 celery 由后端处理。
def upload_file(request):
path = 'uploads/my_file.csv'
with default_storage.open(path, 'w') as file:
file.write(request.FILES['upload'].read().decode('utf-8-sig'))
process_upload.delay(path)
return HttpResponse()
@shared_task
def process_upload(path):
with default_storage.open(path, 'r') as file:
dialect = csv.Sniffer().sniff(file.read(1024]))
file.seek(0)
reader = csv.DictReader(content, dialect=dialect)
for row in reader:
# etc...
问题是,尽管我在写入和读取时明确使用文本模式,但当我读取文件时,它以bytes 的形式出现,这是 csv 库无法处理的。有没有办法在不读取和解码内存中的整个文件的情况下解决这个问题?
【问题讨论】:
标签: python django django-storage