CSV 데이터를 매핑 된 모델에 업로드하고 데이터를 채우는 간단한보기가 있습니다. 이 작업은 완벽하지만 지금은 Celery을 통합하려고합니다. 다음 작업을 수행하는 데 정말로 어려움을 겪고 있습니다. 내가 장고와 함께 셀러리를 시도하고 Amazon SQS.Celery로 작업 가져 오기
이 작업을 실행 내 view.py
의 주요 부분이다 :
def upload(request):
# If we had a POST then get the request post values.
if request.method == 'POST':
form = ContactUploadForm(request.POST, request.FILES)
# Check we have valid data
if form.is_valid():
filename = handle_uploaded_file(request.FILES['file'])
import_csv.delay(filename)
def handle_uploaded_file(f):
with open('name.csv', 'wb+') as destination:
for chunk in f.chunks():
destination.write(chunk)
이는 셀러리의 오류를주는 task.py
@task
def import_csv(filename):
ContactCSVModel.import_from_file(filename)
에 나의 첫번째 시도였다을 기록 : AttributeError: 'NoneType' object has no attribute 'seek'
내 두 번째 실제로는 SQS에 파일을 업로드하려고 시도하기 때문에 작동하지 않을 것이라고 생각하며 SQSError: 413 Request Entity Too Large
을 제공합니다. 나는 이것이 내가하고 싶은 일이 아니라고 가정하고있다. 그 일은 SQS에 파일을 업로드하고 싶지 않다. task.py
@task
def import_csv(filename):
ContactCSVModel.import_data(data = open(filename))
3에서
2 차 시도 대신가
@task
def import_csv(request):
filename = handle_uploaded_file(request.FILES['file'])
ContactCSVModel.import_data(data = open(filename))
이 오류 **Can't pickle <type 'cStringIO.StringO'>: attribute lookup cStringIO.StringO failed**
에게 제공 요청에 전달하여 task.py에서 시도 이 작업을 어떻게 수행 할 수 있습니까? 나는 그것이 매우 간단하다는 것을 확신한다 :) 위에서 볼 수 있듯이 나는이 작업을 만들기 위해 위의 몇 가지 다른 것들을 시도했다. 이 예에 따라