21 Ocak 2018 Pazar

Azure Web App Service üzerinde SpaCy (veya diğer Python native module) kurulumu



Azure App Service üzerinde Python ile geliştirilmiş uygulamayı çalıştırabilmek için:
-İstenirse güncel Python extension kurulumu (3.4 mevcut)
-Eğer geliştirilen uygulama "native module" kullanıyorsa gerekli çevrim işleminin yapılması (Windows App Service üzerinde çalışabilmesi için)

Aşağıdaki açıklamalarda Azure Web App Service ortamına bir Cython native compiler'a ihtiyaç duyan Python paketi olan spaCy NLP kurulumu anlatılmakta. Aynı yöntem ile diğer compiler kullanan Python paketleri kurulumu da yapılabilir.

Ön bilgi

Azure App Service üzerinde Python 3.4 kurulu geliyor. Uygulama ayarlarından açık konuma getirilip kullanılabilir.

Baştan sonra Git üzerindeki hazır bir örnek uygulamayı Azure App Service de çalışır hale getirme örneği:
-"Deployment user" oluşturma
-"Resource Group" oluşturma
-"App Service Plan" oluşturma
-Uygulamayı oluşturma
-Git üzerinden Azure'daki uygulamaya kurulum


11 Ocak 2018 Perşembe

Azure App Service üzerinde problem çözümü


Farklı katmanlarda hatalar oluşabilmekte. Bunlar;

1-Uygulamanın kendisi: 
"object reference not set" hatasından "An error occurred while sending the request." hatasına kadar çeşitli hatalar oluşabilmekte.
Tabi bir de StackOverflowException hatasını unutmamalı. https://blogs.msdn.microsoft.com/spike/2011/11/04/how-to-create-a-stackoverflowexception-and-how-to-figure-out-where-it-is-happening/

2-Uygulamanın üzerinde çalıştığı ortam: 
Yani .Net Framework / .Net Core. Uygulamanın geliştirildiği ortam ve çalışma ortamı (production) arasındaki farklılıklardan kaynaklanabilir.
Kendilerini "Unhandled Exception: System.TypeInitializationException: The type initializer for 'System.Diagnostics.DiagnosticListener' threw an exception." hatası olarak belli ederler.
Yani uygulama çalışırken değil daha en baştan (Program.Main(String[] args)) uygulamanın başlamasına engel olurlar.
Bu bazen uygulama doğru version üzerinde çalışıyor olsa bile ortaya çıkabilir. Azure örneğinde "App Service" uygulamasına eklenen bir extension ile uyumsuzluk da sebep olabilir.
Örneğin: Application Insight 2.4.7 https://stackoverflow.com/questions/47411101/could-not-load-type-system-diagnostics-productionbreakpointsstub-error-in-app-d?rq=1