我正在编写一个Web应用程序,其目的是充当应用程序和Amazon API之间的中间层。我认为REST样式API适合并选择Tastypie来简化实现。
我已经创建了一个名为Instance的模型和一个Tastypie资源。为简化一点,假设该资源的PUT将启动EC2实例,而DELETE将停止它。在需要与亚马逊API进行通信的地方,处理这些操作的适当位置在哪里?它应该放在资源代码,模型代码还是其他地方?
此外,将错误消息返回给客户端的最合适方法是什么?
答案 0 :(得分:0)
我会这样做:
在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