1. Ana Sayfa
  2. Microsoft Azure
  3. Azure Functions Üzerinde Python Projesi Oluşturma

Azure Functions Üzerinde Python Projesi Oluşturma

az-func-python-1

sadece tetiklendiği zaman çalışan, sunucu altyapısından bağımsız fonksiyonlar oluşturabildiğiniz bir sunucusuz yazılım servisidir. Burada “sunucusuz” ibaresi ile anlatılmak istenen aslında sizin sadece yazdığınız kod ve gereksinimleri ile ilgilenmenizin yeterli olmasıdır. Sizin kodunuzun düzgün çalışabilmesi için gerekli tüm altyapı Azure tarafından yönetilmektedir.

Azure Functions her ne kadar “stateless” fonksiyonlar için için tasarlanmış olsa da, farklı veri kaynaklarına bağlanarak hızlı API geliştirme işlemleri için de kullanılabilen bir sistemdir. 

Bu yazımda sizlere Azure Functions üzerinde bir kodunu nasıl çalıştıracağımızı göstereceğim.


Ön Gereksinimler

Azure Functions üzerine python projenizi oluşturabilmek için öncelikle bazı gereksinimleri yüklemeniz gerekli. Azure Functions şu anda Python 3.6 versiyonunu destekliyor. O yüzden ilk olarak bilgisayarımıza Python 3.6 kuruyoruz. Python 3.6.8 versiyonunu buradan indirip bilgisayarınıza yükleyebilirsiniz.

azure functions

Resim – 1

için Azure Functions eklentisi

Projemizi oluşturma ve Azure functions üzerine yükleme işlemleri için ise; VS Code ve Azure Functions Eklensini yüklemeniz gerekiyor. Python üzerinde geliştirme yapacağımız için Python eklentisini de yüklemenizi öneririm.

Tabi bir de geçerli bir Azure Aboneliğiniz olması gerekli. Eğer daha önce abonelik oluşturmadıysanız Azure size 1 aylık bedava deneme imkanı sunacaktır. Benim gibi deneme süresini erken başlatıp boşa harcadıysanız da üzülmeyin. Abonelikler altından “Pay-As-You-Go” üyeliği ile sadece kullandığınız kadar ödeme yapma seçeneğiniz var.


Azure Functions Üzerinde Python Projesi Oluşturma

Tüm gereksinimleri tamamladıysanız python fonksiyonumuzu çok hızlı bir şekilde oluşturabiliriz. Bunun için öncelikle VS Code çalıştırıyoruz ve sol taraftaki toolbar üzerinde Azure tuşuna tıklıyoruz. Functions kısmının aktif hale gelmesi için öncelikle aktif üyeliğinizin bulunduğu hesabınızla giriş yapmalısınız. Bunun için en üst kutucukta bulunan bağlantıyı kullanabilirsiniz. Giriş yaptıktan sonra Functions kutusu üzerinde bulunan toolbar’daki ilk tuşa tıklayarak projemizi oluşturmaya başlıyoruz. 

azure create functions project

Resim -2 

Azure Functions projesi oluşturma

Proje oluşturma işlemi 5 sorudan oluşuyor. Bu sorular sırasıyla;
  1. Proje klasörünü seçin – ms-az-func-python-tutorial
  2. Kullanacağınız yazılım dilini seçin – Python
  3. Fonksiyonun tetikleme türünü seçin –
  4. Fonksiyonunuza bir isim verin – HttpTrigger
  5. Erişim yetkilendirmesini seçin – Anonymous

 

Resim – 3

Oluşturulan projesi

Proje oluşturma işlemi tamamlandığında karşımıza örnek bir kod çıkıyor. Bu kod sayfası tüm kodunuzu oluşturacağınız ve Azure Functions üzerinde çalışacak python scriptini içeriyor. Çok detaya girmeden hızlıca kodu açıklamak gerekirse, Azure Functions projesi varsayılan ayarlarıyla kullanıldığında tetiklenme durumunda main fonksiyonunu çağırıyor ve bir req değişkeniyle birlikte bir request nesnesi gönderiyor. Kodun kalan kısmında ise GET veya POST ile gelen parametrelerin nasıl okunacağı ile ilgili bir örnek gösterilmiş. Fonksiyon sonucunda func.HttpResponse fonksiyonu yardımıyla content (string) ve beraberinde status_code dönüşü yapabiliyorsunuz.

Bu yazımda size göstereceğim örnek kod çok basit bir feed parsing işlemi olacak. Bunun için buzzfeed üzerinden bir rss feed okuyup, yalnızca istediğim özellikleri filtreleyerek json olarak geri döndüreceğim. Bunun için feedparser python modülüne ihtiyacım var. Bu modülü kurmak için VS Code terminal penceresinde pip install feedparser komutunu çalıştırıyoruz.

 

Resim – 4

Proje için gerekli modüllerin kurulumu

Projenize eklediğiniz bağlantılı modüllerin (dependency) Azure üzerinde de yüklenmesi için proje klasöründe bulunan requirements.txt dosyasına her satır bir eklenti olacak şekilde şu formatta eklenmesi gerekiyor: feedparser==5.2.1 . Bu eklemeyi de yaptıktan sonra fonksiyon kodumuzu aşağıdaki şekilde değiştirebiliriz:

Bu noktada kodunuzu yerel olarak test edebilirsiniz. F5 tuşuna bastığınızda VS Code yerel olarak kodu çalıştırıp lokal bir sunucu oluşturuyor ve HttpTrigger test edebileceğiniz bağlantı URL’sini terminal penceresinde size veriyor.

Resim -5

Lokal olarak fonksiyonu çalıştırma (debug)

Ctrl tuşu basılı olarak bağlantıya tıkladığınızda fonksiyonunuz bir browser penceresinde açılarak trigger oluyor ve çıktısı ekrana geliyor.

 


Python Projesini Azure Functions Üzerine Yükleme

Python kodunuz içerisinde herhangi bir harici modül kullanmadıysanız yükleme işlemi çok basit. Yine yan çubukta bulunan “Functions” kutusu üzerinde bulunan “Deploy to Function App..”  tuşuna basarak projenizi hızlı bir şekilde azure üzerine yükleyebilirsiniz. Bu varsayılan yüklemede kod bir zip dosyası olarak karşıya yükleniyor ve bu zip dosyası içerisinden çalıştırılıyor.

Ancak python çekirdek kütüphaneleri haricinde modüller kullandıysanız, kodun karşıya yüklendiğinde gereksinimlerinin de yüklenmesi ve derlenmesi gerekiyor. Bunun için deploy işlemi tamamlandıktan sonra Azure portal üzerinde Home > App Services > (Uygulama Adı) > Configuration içerisinde bulunan WEBSITE_RUN_FROM_PACKAGE değişkeninin silinmesi gerekiyor. Ayrıca, Python kodunun Azure üzerinde derlenmesi için iki yeni değişken eklemeniz gerekli:

  • ENABLE_ORYX_BUILD=true
  • SCM_DO_BUILD_DURING_DEPLOYMENT=true

Bu değişkenleri Azure Portal üzerinden projenize ekledikten sonra VS Code terminal penceresinde aşağıdaki kodu çalıştırarak projenizi Azure üzerinde derlenmesi için tekrar yükleyebilirsiniz.

func azure functionapp publish functions-projenizin-ismi --build remote

Proje build işlemi aşamalarını output penceresinde görebilirsiniz. Paketinizin Azure üzerine yüklenmesi ve derlenmesi tamamlandığında aşağıdaki şekilde bir ekran göreceksiniz.

Resim – 6

Python kodunun Azure Functions üzerinde derlenmesi

Python kodunuz artık Azure Functions üzerinde çalışmaya hazır. Derleme sonrasında size verilen Invoke URL adresini kullanarak kodunuzu tetikleyebilirsiniz.


Özet

Bu ilk yazımda size dış modüllere bağlı bir python projesini Azure Functions üzerinde nasıl çalıştırabileceğinizi kısaca anlatmaya çalıştım. Azure Functions geliştirilen python desteği ile birlikte artık daha fazla kütüphane kullanılmasına imkan sağlıyor. Farklı tetikleme metodları, entegrasyonlar ve veri kaynaklarına bağlantı seçenekleri sayesinde Azure Functions backend mimarisi ve IoT için oldukça fazla kullanılacak gibi görünüyor.

Bu konuyla ilgili sorularınızı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar        

www.mshowto.org

TAGs : azure functions, , azure functions python, HttpTrigger, python, vs code

 

Yorum Yap

Yazar Hakkında

Full-stack Geliştirici, Gemi İnşa Mühendisi. 2005 yılında Yıldız Teknik Üniversitesi Gemi İnşa Mühendisliği bölümünden mezun olmuş, yazılıma olan ilgisi nedeniyle kendisini bu konuda yetiştirmiştir. Şu anda özel bir yazılım firmasında Çözüm Danışmanı olarak görev almaktadır.

Yorum Yap