مشاركة عبر


ابن تطبيقات Python Azure Functions الخاصة بك

يدعم Azure Functions ثلاث خيارات بناء لنشر تطبيقات بايثون الخاصة بك على Azure. اختر طريقة البناء بناء بناء على بيئتك المحلية، واعتماديات التطبيق، ومتطلبات وقت التشغيل.

مقارنة سريعة لإجراءات البناء

نوع التوزيع حيث يتم تثبيت التبعيات حالة الاستخدام النموذجي
البناء عن بعد (موصى به) Azure (App Service) افتراضي، موصى به لمعظم المستخدمين
البناء المحلي آلتك مطوري لينكس/ماك أوس، سيناريوهات محدودة لويندوز
التبعيات المخصصة يتم التعامل معه عبر رابط فهرس إضافي أو تثبيت محلي تبعيات غير PyPI

اعتبارات حزمة النشر

عند نشر تطبيق وظائف بايثون الخاص بك على Azure، ضع متطلبات التغليف هذه في اعتبارك:

  • محتويات الحزمة، وليس المجلد: قم بنشر محتويات مجلد مشروعك، وليس المجلد نفسه.
  • مستوى host.jsonالجذر: تأكد من وجود ملف واحد host.json في جذر حزمة النشر، وليس متداخلا في مجلد فرعي.
  • استبعاد ملفات التطوير: يمكنك استبعاد مجلدات مثل tests/، .github/، و .venv*/ من الحزمة المنشورة عن طريق تضمينها في .funcignore.
  • يجب أن تتطابق بيئة البناء مع بيئة الإنتاج: يجب أن تبنى تبعياتك على جهاز أوبونتو باستخدام نفس نسخة بايثون الخاصة بتطبيق الإنتاج. البناء عن بعد يتعامل مع هذا السيناريو تلقائيا.
  • يجب تثبيت التبعيات في ./.python_packages/lib/site-packages: يقوم البناء عن بعد بتثبيت جميع التبعيات المدرجة requirements.txt في الدليل الصحيح.
  • ضع حجم حزمة النشر في اعتبارك: مجموعات الاعتماد الكبيرة تزيد من وقت البناء، وتأخير التشغيل البارد، ووقت استيراد وتهيئة الوحدات. التطبيقات التي تحتوي على مكتبات علمية أو تعلم آلا كبيرة (بما في ذلك pytorch) تتأثر بشكل خاص.
  • البناء عن بعد له مهلة زمنية مدتها 60 ثانية: إذا تجاوز تثبيت الاعتماد الحد المحدد، يفشل البناء. في هذه الحالة، فكر في استخدام بناء محلي ونشره مع تبعيات معدة مسبقا.
  • استيراد الوحدات له حد زمني دقيقتين: تحميل وحدة بايثون وفهرسة الوظائف أثناء بدء التشغيل له حد دقيقتين للبايثون 3.13 وما فوق، أو للإصدارات القديمة بايثون التي PYTHON_ENABLE_INIT_INDEXING تكون مفعلة. إذا تجاوز تطبيقك هذا الرقم، قلل من الاستيراد على المستوى الأعلى أو استخدم الاستيراد الكسول (استيراد الوحدات داخل جسم الدوال بدلا من النطاق العام).

بناء عن بعد

البناء عن بعد هو النهج الموصى به لنشر تطبيق بايثون الخاص بك على الوظائف باستخدام الكود فقط.

مع البناء عن بعد، تتولى منصة Functions تثبيت الحزم وتضمن التوافق مع بيئة التشغيل عن بعد. استخدام النسخة البعيدة يؤدي أيضا إلى حزمة نشر أصغر.

يمكنك استخدام البناء عن بعد عند نشر تطبيق بايثون باستخدام هذه الأدوات:

لتمكين البناء عن بعد لسيناريوهات أخرى، مثل التسليم المستمر مع خطوط أنابيب Azure، راجع تمكين البناء عن بعد.

يدعم البناء عن بعد أيضا فهارس الحزم المخصصة عند استخدام PIP_EXTRA_INDEX_URL إعدادات التطبيق. لمزيد من المعلومات، راجع الإنشاء عن بعد.

هام

يقوم البناء عن بعد بتثبيت جميع التبعيات المدرجة في requirements.txt. لضمان تثبيت جميع الحزم المطلوبة، تأكد من تضمين تلك التبعيات في ملفك requirements.txt .

بناء محلي

إذا لم تطلب بناء عن بعد، تثبيت التبعيات على جهازك. يتم بعد ذلك تغليف المشروع المحلي بالكامل والتبعيات محليا ونشره في تطبيق الوظائف الخاص بك. استخدام البناء المحلي يؤدي إلى رفع حزمة أكبر.

تحتاج أيضا إلى تثبيت التبعيات في المجلد الصحيح. استخدم pip install --target="./.python_packages/lib/site-packages" ذلك لتثبيت الاعتماديات المطلوبة في مجلدك المحلي .python_packages/lib/site-packages . على سبيل المثال، إذا كانت تبعاتك مدرجة في ملف requirements.txt ، يمكنك تشغيل هذا الأمر:

pip install --target="./.python_packages/lib/site-packages" -r requirements.txt

استخدم البناء المحلي عندما:

  • أنت تطور محليا على لينكس أو macOS.
  • البناء عن بعد غير متوفر أو مقيد بذلك.
  • تريد تعريف تبعيات في ملف غير requirements.txt، مثل pyproject.toml.

يمكن تكوين الأدوات التالية لاستخدام البناء المحلي:

هام

عند تطوير تطبيقات بايثون على جهاز ويندوز، لا تستخدم النسخة المحلية. غالبا ما تواجه الحزم المبنية على جهاز كمبيوتر ويندوز مشاكل في النشر والتشغيل على لينكس في Azure Functions. استخدم النسخة المحلية فقط إذا كنت واثقا أن الحزمة تعمل على أنظمة لينكس.

التبعيات المخصصة

يدعم Azure Functions الاعتمادات المخصصة وغيرها من الاعتمادات غير PyPI باستخدام PIP_EXTRA_INDEX_URL إعداد التطبيق أو من خلال إنشاء نسخة محلية على جهاز Linux أو macOS.

بناء عن بعد مع رابط فهرس إضافي

عندما تكون باقاتك الخاصة متاحة عبر الإنترنت، يمكنك طلب بناء عن بعد بعد تعيين موقع الحزمة الخاصة باستخدام PIP_EXTRA_INDEX_URL إعدادات التطبيق. عندما تضبط PIP_EXTRA_INDEX_URL، تستخدم البناءات البعيدة هذا البث أثناء النشر. PIP_INDEX_URL تحل محل مؤشر الحزمة، لذا فكر في استخدامها PIP_EXTRA_INDEX_URL بدلا من ذلك لمنع السلوك غير المتوقع.

الحزم أو العجلات المحلية

يتم دعم الحزم المحلية والعجلات عند بناء تطبيقات Python Azure Function.

لتثبيت هذه الحزم أو العجلات باستخدام البناء عن بعد، يمكنك تضمين التبعيات في ملفك requirements.txt ونشرها مع تفعيل البناء عن بعد.

على سبيل المثال، قد يبدو ملفك requirements.txt كالمقطع التالي:

 # Installing a custom wheel
 <my_package_wheel>.whl
 
 # Installing a local package
 path/to/my/package

لتثبيت هذه التبعيات باستخدام البناء المحلي، قم بتثبيت التبعيات في مجلد محلي .python_packages/lib/site-packages ونشرها مع تعطيل البناء عن بعد. على سبيل المثال، إذا كانت الحزم محددة في ملفك requirements.txt ، يمكنك تثبيتها ونشرها باستخدام الأوامر والأدوات الأساسية التالية:

pip install --target="./.python_packages/lib/site-packages" -r requirements.txt
func azure functionapp publish <APP_NAME> --no-build