簡體   English   中英

Django 中基於異步 Class 的視圖

[英]Async Class Based Views in Django

我是 Django 的新手,我一直在研究基於 Stripe 的應用程序,我發現我的基於 class 的視圖非常緩慢,我需要讓它們盡可能快地運行。 我發現在 Django 中有可用的異步支持,但我無法弄清楚如何在基於 class 的視圖中使用它,我發現到處都有基於功能的示例。

我正在查看的 Django 文檔是: Django 異步支持

我正在添加一個示例代碼,我想將其轉換為異步支持視圖

看法:

class BillInfo(DisablePATCHMethod, generics.RetrieveAPIView):

serializer_class = BillSerializer

序列化器:

class BillSerializer(ReturnNoneSerializer, serializers.ModelSerializer):
interval = serializers.CharField(read_only=True, required=False)
amount = serializers.IntegerField(read_only=True, required=False)
date = serializers.DateTimeField(read_only=True, required=False)
is_active = serializers.BooleanField(read_only=True, required=False)
subscription_expiry = serializers.BooleanField(read_only=True, required=False)
active_jobs = serializers.IntegerField(read_only=True, required=False)

class Meta:
    model = Billing
    fields = "__all__"

def to_representation(self, validated_data):
    stripe.api_key = settings.STRIPE_API_KEY
      stripe_sub = (stripe.Subscription.retrieve(self.context["request"].billing.stripe_subscription_id))
        stripe_object = stripe_sub.get("items")
        quantity = stripe_object.get("data")[0].get("quantity")
        amount = stripe_object.get("data")[0].get("price").get("unit_amount") // 100 * quantity
        interval = stripe_object.get("data")[0].get("plan").get("interval")
        date = datetime.fromtimestamp(stripe_sub.current_period_end).strftime("%Y-%m-%d %H:%M:%S")
        if validated_data.subscription_end < make_aware(datetime.now()):
            is_active = False
        else:
            is_active = True
        if validated_data.subscription_end <= make_aware(datetime.now()):
            subscription_expiry = True
        else:
            subscription_expiry = False
        return {
            "date": date,
            "interval": interval,
            "amount": amount,
            "quantity": quantity,
            "is_active": is_active,
            "subscription_expiry": subscription_expiry,
        }

我想讓我的 Stripe 調用更快。 任何幫助將不勝感激,我是新手,正在學習 Django。

每當您需要提高性能時,請從 profiler 開始 緩慢的部分可能不是您所期望的。

我特別懷疑,調用 Stripe API 作為例行 JSON 轉換的一部分可能會很慢。 您可能希望在Subscription model 中緩存 Stripe API 數據的副本,因此您不必針對每個請求訪問外部 API。 但是......再次......確保您首先配置文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM