شعار أوراباسي
aurabaseمستندات
مستندات›Edge Functions›How an invocation works

كيفية عمل الاستدعاء

جولة عبر مكالمة واحدة لشرح الحدود ورموز الخطأ والتوقيت الذي تراعيه.

8 د قراءة·المستوى متقدم·تمت المراجعة في 12‏/10‏/2026
تم إنشاء هذا النص الإنجليزي تلقائيًا من النص الأصلي الفرنسي ولم تتم مراجعته بعد.
تمت ترجمة هذه الصفحة تلقائيًا. النسخة الإنجليزية موثوقة.
#
المسار

1. مسار المكالمة

دعوة واحدةtext
your code ── invoke('hello') ──▶ gateway (data plane)
                                   • checks the key and the user's token
                                   • finds the project from the host
                                   • adds x-aura-role, x-aura-user-id, x-aura-project-id
                                   │  message bus (request / reply)
                                   ▼
                           functions service
                                   • access policy: only invoke is public
                                   • reads the function, reserves one invocation of the plan quota
                                   │  HTTP
                                   ▼
                            edge runtime
                                   • loads code, limits and variables
                                   • starts an isolated V8 worker
                                   • rebuilds the request you described
                                   ▼
                             your function ── Response ──▶ back along the same path

تتحدث البوابة وخدمة الوظائف عبر ناقل الرسائل. الرسالة الموجودة على هذا الناقل لها حد للحجم، ولهذا السبب لا يمر طلب أو استجابة أعلى من حوالي 256 كيلو بايت: راجع حدود.

#
وقت التشغيل

2. داخل وقت التشغيل

  • عامل واحد لكل مكالمة. يبدأ وقت تشغيل الحافة عامل V8 معزولًا جديدًا لكل استدعاء، مع حد الذاكرة ومهلة الوظيفة. لا شيء في الذاكرة يبقى على قيد الحياة من مكالمة إلى أخرى: لا تحتفظ بالحالة في متغير. استخدم قاعدة البيانات الخاصة بك أو التخزين.
  • يتم تخزين الكود مؤقتًا لبضع ثوان. يحتفظ وقت التشغيل بالرمز وحدود الوظيفة لمدة 5 ثوانٍ ويسقطها عند النشر. تتم قراءة المتغيرات في كل مكالمة.
  • تمت إعادة بناء طلبك. ينشئ وقت التشغيل الطلب الذي وصفته (method, path, headers, body) ويسلمه إلى معالج Deno.serve الخاص بك. وبالتالي فإن الوظيفة تتصرف مثل أي خادم HTTP.
  • يفرض وقت التشغيل المهلة. عند انقضاء timeout_secs، فإنه يلغي العامل؛ يرى المتصل خطأً بعد هذا التأخير.
  • تعمل وظائف WASM داخل الخدمة نفسها، مع حدود للذاكرة والوقت والتعليمات. يمكن لوظيفة WASM الإبلاغ عن أسطر السجل، التي تظهر في حقل logs للاستجابة؛ لا يمكن لوظيفة Deno.
#
الردود

3. المغلف والوضع الخام

لدى الخدمة طريقتان لإرجاع إجابة وظيفتك، والتي يتم اختيارها بواسطة رأس الطلب X-Aurabase-Invoke-Mode.

المغلف (الافتراضي)خام (raw)
حالة HTTPدائما 200حالة الوظيفة الخاصة
الجسم{ data: { status, headers, body, logs, duration_ms }, meta }بايتات الدالة
المحتوىنص JSON أو UTF-8أي شيء، بما في ذلك ثنائي
يستخدم من قبلresponseType: 'json'، الاستوديو'text', 'blob', 'arrayBuffer', HTTP مباشر

يوجد المغلف بحيث يمكن لاستجابة JSON واحدة أن تحمل حالة المكالمة ورؤوسها ومدتها. حدها ​​هو أن البايتات لا يمكنها الانتقال في JSON: ولهذا السبب تحتاج الاستجابة الثنائية إلى الوضع الأولي. يختار SDK الوضع من responseType.

في الوضع الأولي تضيف الخدمة x-aurabase-invoke-origin: function إلى إجابات وظيفتك. الخطأ الذي يأتي من البوابة أو وقت التشغيل لا يحمله. هذه هي الطريقة التي يفصل بها SDK FunctionsHttpError (الإجابة على وظيفتك) عن FunctionsRelayError (فشل النظام الأساسي).

#
الوقت

4. الوقت والقياس والفشل

يتم دمج ثلاث مهلات بحيث لا تنتهي أي مهلة قبل المهلة الموجودة بداخلها:

المهلات، من الخارج إلى الداخلtext
gateway 380 s  ⊃  message bus 370 s  ⊃  function timeout_secs (≤ 300 s) + margin

تنتظر الخدمة وقت التشغيل لـ timeout_secs بالإضافة إلى هامش. نظرًا لأن وقت التشغيل يلغي العامل عند timeout_secs، فإنك ترى عادةً خطأ من الوظيفة في تلك اللحظة، و504 TIMEOUT فقط إذا توقف وقت التشغيل نفسه عن الاستجابة. وبالتالي فإن 504 يعني أن الوظيفة قد بدأت وربما كان لها تأثيرات: لا تكرر مكالمة غير فعالة بشكل أعمى.

القياس والحصص:

  1. قبل المكالمة، تحتفظ الخدمة باستدعاء واحد من حصة الخطة. إذا تم استنفاد الحصة، فستتوقف المكالمة هنا مع 403.
  2. بعد المكالمة، يقوم بتسجيل الاستدعاء ومدته بالمللي ثانية.
  3. إذا فشلت المكالمة قبل أن تجيب وظيفتك، فسيتم تحرير الحجز ولا يتم احتساب أي شيء.
#
العواقب

5. ما يلي بالنسبة للتعليمات البرمجية الخاصة بك

  • اجعل كل مكالمة قصيرة وعديمة الحالة. للعمل الطويل، أدرج مهمة.
  • اجعل الطلبات والاستجابات صغيرة؛ وضع الملفات في التخزين وتمرير مرجع.
  • جعل الوظائف غير فعالة: يمكن لإعادة محاولة المهمة، أو إعادة المحاولة للعميل بعد حدوث خطأ في الشبكة، أو تسليم cron مكرر، تشغيل التعليمات البرمجية الخاصة بك مرتين.
  • قم بالتفويض على رؤوس هوية النظام الأساسي، لأنها القيم الوحيدة التي لا يستطيع المتصل تزويرها. راجع الأمان.
  • قم بقياس زمن الوصول الخاص بك: كل مكالمة تدفع مقابل بداية العامل. تم الإبلاغ عن الحد الأدنى من الوظائف duration_ms: 74 على مكدس محلي.