1

私は、アプリケーションとAmazonのAPIの間の中間層として機能することを目的としたWebアプリを作成しています。私はRESTスタイルのAPIが適合すると考え、実装を容易にするためにTastypieを選択しました。

インスタンスと呼ばれるモデルとそれに対応するTastypieリソースを作成しました。少し単純化するために、そのリソースへのPUTがEC2インスタンスを起動し、DELETEがそれを停止するとします。AmazonのAPIと通信する必要があるこれらのアクションを処理するための適切な場所はどこですか?リソースコード、モデルコード、またはその他の場所に配置する必要がありますか?

また、クライアントにエラーメッセージを返すための最も適切な方法は何ですか?

4

1 に答える 1

0

私はこのようにします:

  • PUTは新しいインスタンスを作成し、それをデータベースに保存します
  • インスタンスモデルのDjangoPostSave Signalは、特別なことを実行します

models.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()

tasks.pyで:

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
于 2012-09-07T11:03:31.770 に答える