2012-09-07 3 views
1

나는 목적이 응용 프로그램과 Amazon의 API 사이의 중간 계층 역할을하는 웹 응용 프로그램을 작성하고 있습니다. 나는 REST 스타일 API가 적합 할 것이라고 생각하고 구현을 쉽게하기 위해 Tastypie를 선택했다.Django/Tastypie에서 작업을 처리하는 방법은 무엇입니까?

Instance라는 모델과 함께 사용하기위한 Tastypie 리소스를 만들었습니다. 조금 단순화하기 위해 해당 리소스에 대한 PUT이 EC2 인스턴스를 시작하고 DELETE가이를 중지한다고 가정 해 봅시다. Amazon API와 통신해야하는 이러한 작업을 처리 할 수있는 적절한 위치는 어디입니까? 그것은 자원 코드, 모델 코드 또는 다른 곳에 있어야합니까?

또한 오류 메시지를 클라이언트로 반환하는 가장 적합한 방법은 무엇입니까?

답변

0

나는 이런 식으로 할 것 :

모델 :

  • PUT는 인스턴스 모델에 Django Post Save Signal 특별한 꼬추를 실행
  • 데이터베이스에 새로운 인스턴스 저장 파일을 작성합니다 평 : tasks.py에서

    @receiver(post_save, sender=Instance, dispatch_uid="create_instance") 
    def create_instance(sender, **kwargs): 
        instance = kwargs['instance'] 
        created = kwargs['created'] 
        raw = kwargs['raw'] 
        if instance and created and not raw: 
         from my_project.my_app.tasks import create_ec2_instance 
         result = create_ec2_instance(instance) 
         if result: 
          instance.started = True 
          instance.save() 
    

    :

    def create_ec2_instance(instace): 
        # do the calls to ec2 to create the instance and get a result form it 
        return the_result_from_ec2 
    
+0

답변을 주셔서 감사합니다. 흥미로운 것처럼 보이지만 아마존에 대한 호출이 초기 PUT에 대한 응답으로 성공했는지 여부를 클라이언트에게 알리고 싶습니다. 즉 amazon에서 리소스가 부족하다고 표시되면 일부 오류 텍스트를 반환합니다. 다른 한편, WS가 아마존과 통신하는 동안 요청을 멈추게하는 것은 나쁜 생각 일 수 있습니다. 아마도 사용자가 성공했는지 확인하기 위해 상태 요청을하도록하는 것이 좋습니다. – Patrik

+0

네, 후자의 경우 사용자의 관점에서 볼 때 더 많은 작업이 필요합니다. – kgr

관련 문제