2017-12-16 1 views
0

(장고) :작업은 반환 거짓 나는 셀러리에서 다음과 같은 작업 한

@shared_task 
def convert_to(audio_file_pk): 
    file_obj = AudioFile.objects.get(pk=audio_file_pk) 
    print("Tsk Run: Returning {}".format(file_obj.audio_file.path)) 
    return(file_obj.audio_file.path) 

내가 내 집보기에서 다음 파일을 업로드 한 :

def model_form_upload(request, pk=None): 
    if request.method == 'POST': 
     form = AudioForm(request.POST, request.FILES) 
     if form.is_valid(): 
      obj = form.save() 
      task = convert_to.apply_async(args=[obj.pk]) 
      return render(request, 'index.html', { 
      'form': form, 'task_id' : task.task_id 
      }) 
      #return redirect('home', args=[obj.pk]) 
    else: 
     form = AudioForm() 
     return render(request, 'index.html', { 
     'form': form 
     }) 

내 아약스보기에 다음 코드를 가지고 :

def ajax_view(request, task_id): 
    results = convert_to.AsyncResult(task_id) 
    print(results.ready()) 
    print(task_id) 
    if results.ready(): 
     return render_to_response('download_ready.html', 
            {'results': results.get()}) 
    return render_to_response('not_ready.html', {}) 

이 내 urls.py

에 이 인쇄하도록되어 값 밖으로

[2017-12-16 09:08:38,534: INFO/MainProcess] Received task: nightcore.tasks.convert_to_nightcore[cd1b19fd-f721-4fa1-b9db-1ce01738d030] 
[2017-12-16 09:08:38,536: INFO/ForkPoolWorker-2] Task nightcore.tasks.convert_to_nightcore[cd1b19fd-f721-4fa1-b9db-1ce01738d030] succeeded in 0.00173856299989s: '/home/student/PycharmProjects/tonightcore/media/uploads/The_Skeptic_in_the_Room-OPs_j1EEplI_3O4k7JT.mp3' 

작업 인쇄 :

url(r'^result/(?P<task_id>.*)$', views.ajax_view, name='result') 

이 셀러리 내 작업의 결과입니다.

print(results.ready()) 인쇄

False 내 아약스보기 print(task_id)의 인쇄 값입니다

[16/Dec/2017 09:11:19] "GET /result/cd1b19fd-f721-4fa1-b9db-1ce01738d030 HTTP/1.1" 200 22 
cd1b19fd-f721-4fa1-b9db-1ce01738d030 

당신은 값이 동일하지만, 내가 http://127.0.0.1:8000/result/cd1b19fd-f721-4fa1-b9db-1ce01738d030를 쿼리 할 때, 그것은 반환 볼 수 있듯이 not_ready.html 돌아 오는 동안 download_ready.html

+0

안녕하세요. 셀러리와 어떤 관련이 있습니까? – vmonteco

+0

@vmonteco 셀러리 작업과 추가 정보를 추가했습니다. – Kotlinboy

답변

0

아무런 해답이 없으므로이 문제에 직면 해있는 사람이 많이있는 것 같습니다. 해결책.

해결책을 찾았습니다.

https://github.com/celery/celery/issues/3675

제가

$ # call this command many times, until it says it's not installed 
$ pip uninstall librabbitmq 

librabbitmq 다음이 그것을 고정 pyamqp

CELERY_BROKER_URL = 'pyamqp://localhost' 

브로커 변경 제거. 이제 결과를 얻을 수 있습니다.