2012-06-07 5 views
1

셀러리를 사용하는 법을 배우고 있습니다. 나는 내가 지금까지 배운 내용을 다소 의사의 (a 플라스크 응용 프로그램) 기능이 있습니다반환 된 데이터가있는 셀러리 작업 : 잘못했거나 올바르게 처리 했습니까?

def do_a_task_route(): 
    try: 
     result = a_celery_task.apply_async(args=[request_data]) 
     returned = a_celery_task.AsyncResult(result.task_id).get(timeout = 2.0) 
     return jsonify(response = returned['response']) 
    except: 
     return jsonify(response = "some big problem") 

나는이 권리와 최고의 100 % 확실하지 않다,하지만 지금은 나를 위해 작동합니다. 결과/리턴 된 행은 실행 태스크가 태스크를 수행하고 대기하는 하나의 "returned = run_task"일 수 있습니다.

리팩토링 방향에 대해 생각해 보았습니다. - 작업을 실행하고 결과를 호출하는 함수에 두 줄 (결과/반환)을 묶거나 b) "AsyncResult"를 작업 자체에 넣고 그 결과를 반환합니다. .

이전에이 작업을 수행 한 사람이 셀러리 방식이란 무엇입니까? 아니면 이전에 셀러리를 미세 조정 한 사람의 의견도 있습니다.

답변

0

이 코드를 리팩터링하는 것은 웹 응용 프로그램의 다른 곳에서 다시 사용하려는 경우에만 의미가 있습니다. 새로운 함수에 몇 줄을 넣을 필요가 없습니다. 여기에서 호출 할 수 있습니다. 그러나 코드를 재사용하려는 경우 해당 작업을 시작하고 응답을 반환하는 기능을 갖는 것이 좋습니다. 이러한 리팩토링 원리가 어떤 코드에도 적용되기 때문에 Celery에 관한 질문이라고 생각하지 않습니다.

+0

예 아니요. 셀러 리 작업을 작성한 다른 사람들로부터 피드백을 얻고 의사 코드를 리팩토링하는 방법을 논의하고 있습니다. – blueblank