إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
يدعم 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 Functions Core Tools:
func azure functionapp publishيطلب الأمر بناء عن بعد بشكل افتراضي عند نشر تطبيقات بايثون. -
AZ CLI:
az functionapp deployment source config-zipيستخدم البناء عن بعد بشكل افتراضي عند نشر تطبيقات بايثون. - كود Visual Studio: أمر Azure Functions: Deploy to Azure... يستخدم دائما بناء عن بعد.
-
التسليم المستمر باستخدام إجراءات GitHub: يستخدم إجراء Azure/الدوال action@v1 البناء عن بعد عندما يتم تعيين
remote-buildالمعامل لخطة الاستهلاك المرن أوtrueعندماscm-do-build-during-deploymentيتم تعيين وenable-oryx-buildعلىtrueالخطط المخصصة.
لتمكين البناء عن بعد لسيناريوهات أخرى، مثل التسليم المستمر مع خطوط أنابيب 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 الأساسية: تستخدم
func azure functionapp publishمع العلم--no-build. -
AZ CLI:
az functionapp deployment source config-zipمع العلم--build-remote=false. -
التسليم المستمر باستخدام GitHub Actions: قم بتعيين
remote-buildالمعلمة علىfalseلخطة الاستهلاك المرن أو تعيينscm-do-build-during-deploymentوenable-oryx-buildإلىfalseللخطط المخصصة.
هام
عند تطوير تطبيقات بايثون على جهاز ويندوز، لا تستخدم النسخة المحلية. غالبا ما تواجه الحزم المبنية على جهاز كمبيوتر ويندوز مشاكل في النشر والتشغيل على لينكس في 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
المقالات ذات الصلة
- دليل مرجعي لمطور Azure Functions (بايثون)
- تقنيات التوزيع في Azure Functions