hızlı başlangıç: Python kullanarak Azure işlevleri ve signalr hizmeti ile GitHub star sayısını gösteren bir uygulama oluşturma
Azure SignalR hizmeti uygulamanıza kolayca gerçek zamanlı işlevsellik eklemenizi sağlar. Azure İşlevleri, herhangi bir altyapı yönetimine gerek kalmadan kodunuzu çalıştırmanıza olanak tanıyan sunucusuz bir platformdur. Bu hızlı başlangıçta, istemcilere ileti yayınlamak için Python ile sunucusuz bir uygulama oluşturmak üzere SignalR hizmetini ve Azure Işlevlerini nasıl kullanacağınızı öğrenin.
Not
Makalede belirtilen tüm kodları GitHub edinebilirsiniz
Önkoşullar
Bu hızlı başlangıç; macOS, Windows veya Linux üzerinde çalıştırılabilir.
Visual Studio Code gibi bir kod editörünün yüklü olduğundan emin olun.
Python Azure Işlev uygulamalarını yerel olarak çalıştırmak için Azure Functions Core Tools (sürüm 2.7.1505 veya üzeri) yüklemesini yapın.
Azure Işlevleri Python 3.6 +gerektirir. (Bkz. desteklenen Python sürümleri)
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Sorun mu yaşıyorsunuz? Sorun giderme kılavuzunu deneyin veya bize bilgi verin.
Azure'da oturum açma
Azure hesabınızla Azure portalında https://portal.azure.com/ sayfasında oturum açın.
Sorun mu yaşıyorsunuz? Sorun giderme kılavuzunu deneyin veya bize bilgi verin.
Azure SignalR Hizmeti örneği oluşturma
Uygulamanız Azure’da bir SignalR hizmeti örneğine bağlanır.
Azure portalın sol üst köşesinde bulunan Yeni düğmesini seçin. Yeni ekranda arama kutusuna SignalR hizmeti yazın ve Enter tuşuna basın.

Arama sonuçlarından SignalR Hizmeti’ni seçtikten sonra Oluştur’u seçin.
Aşağıdaki ayarları girin.
Ayar Önerilen değer Açıklama Kaynak adı Genel olarak benzersiz bir ad Yeni SignalR Hizmeti örneğinizi tanımlayan ad. Geçerli karakterler: a-z,0-9ve-.Abonelik Aboneliğiniz Yeni SignalR Hizmeti örneğinin oluşturulacağı abonelik. Kaynak Grubu myResourceGroup SignalR Hizmeti örneğinizin oluşturulacağı yeni kaynak grubunun adı. Konum Batı ABD Size yakın bir bölge seçin. Fiyatlandırma katmanı Ücretsiz Azure SignalR Hizmetini ücretsiz deneyin. Birim sayısı Uygulanamaz Birim sayısı, SignalR Hizmeti örneğinizin kaç bağlantı kabul edebileceğini belirtir. Bu yalnızca Standart katmanda yapılandırılabilir. Hizmet modu Sunucusuz Azure Işlevleri veya REST API kullanmak için. 
SignalR Hizmeti örneğini dağıtmaya başlamak için Oluştur’u seçin.
Örnek dağıtıldıktan sonra portalda açın ve ayarlar sayfasını bulun. Azure SignalR hizmetini Azure Işlevleri bağlama veya REST API aracılığıyla kullanıyorsanız, hizmet modu ayarını sunucusuz olarak değiştirin. Aksi halde Klasik veya varsayılan olarak bırakın.
Sorun mu yaşıyorsunuz? Sorun giderme kılavuzunu deneyin veya bize bilgi verin.
Azure Işlevini yerel olarak kurma ve çalıştırma
Azure Function Core araçlarının yüklü olduğundan emin olun. Ve boş bir dizin oluşturun ve komut satırı ile dizine gidin.
# Initialize a function project func init --worker-runtime pythonBir projeyi başlattıktan sonra, işlevler oluşturmanız gerekir. Bu örnekte 3 işlev oluşturuyoruz.
indexİstemci için bir Web sayfası barındıracak bir işlev oluşturmak için aşağıdaki komutu çalıştırın.func new -n index -t HttpTriggerindex/function.jsonAşağıdaki JSON kodlarını açın ve kopyalayın:{ "bindings": [ { "authLevel": "anonymous", "type": "httpTrigger", "direction": "in", "name": "req", "methods": [ "get", "post" ] }, { "type": "http", "direction": "out", "name": "res" } ] }index/__init__.pyAşağıdaki kodları açın ve kopyalayın.import os import azure.functions as func def main(req: func.HttpRequest) -> func.HttpResponse: f = open(os.path.dirname(os.path.realpath(__file__)) + '/../content/index.html') return func.HttpResponse(f.read(), mimetype='text/html')negotiateİstemcilerin erişim belirtecini alması için bir işlev oluşturun.func new -n negotiate -t SignalRNegotiateHTTPTriggernegotiate/function.jsonAşağıdaki JSON kodlarını açın ve kopyalayın:{ "scriptFile": "__init__.py", "bindings": [ { "authLevel": "anonymous", "type": "httpTrigger", "direction": "in", "name": "req", "methods": [ "post" ] }, { "type": "http", "direction": "out", "name": "$return" }, { "type": "signalRConnectionInfo", "name": "connectionInfo", "hubName": "serverless", "connectionStringSetting": "AzureSignalRConnectionString", "direction": "in" } ] }Ve öğesini açın
negotiate/__init__.pyve aşağıdaki kodları kopyalayın:import azure.functions as func def main(req: func.HttpRequest, connectionInfo) -> func.HttpResponse: return func.HttpResponse(connectionInfo)broadcastTüm istemcilere ileti yayınlamak için bir işlev oluşturun. Örnekte, düzenli aralıklarla ileti yayınlamak için zaman tetikleyicisi kullanırız.func new -n broadcast -t TimerTrigger # install requests pip install requestsbroadcast/function.jsonAşağıdaki kodları açın ve kopyalayın.{ "scriptFile": "__init__.py", "bindings": [ { "name": "myTimer", "type": "timerTrigger", "direction": "in", "schedule": "*/5 * * * * *" }, { "type": "signalR", "name": "signalRMessages", "hubName": "serverless", "connectionStringSetting": "AzureSignalRConnectionString", "direction": "out" } ] }broadcast/__init__.pyAşağıdaki kodları açın ve kopyalayın.import requests import json import azure.functions as func def main(myTimer: func.TimerRequest, signalRMessages: func.Out[str]) -> None: headers = {'User-Agent': 'serverless'} res = requests.get('https://api.github.com/repos/azure/azure-signalr', headers=headers) jres = res.json() signalRMessages.set(json.dumps({ 'target': 'newMessage', 'arguments': [ 'Current star count of https://github.com/Azure/azure-signalr is: ' + str(jres['stargazers_count']) ] }))
Bu örneğin istemci arabirimi bir Web sayfasıdır. İşlevin içindeki HTML içeriğini okuduk
content/index.htmlindex,index.htmlcontentProje kök klasörünüzün altında dizinde yeni bir dosya oluşturun. Ve aşağıdaki içeriği kopyalayın.<html> <body> <h1>Azure SignalR Serverless Sample</h1> <div id="messages"></div> <script src="https://cdnjs.cloudflare.com/ajax/libs/microsoft-signalr/3.1.7/signalr.min.js"></script> <script> let messages = document.querySelector('#messages'); const apiBaseUrl = window.location.origin; const connection = new signalR.HubConnectionBuilder() .withUrl(apiBaseUrl + '/api') .configureLogging(signalR.LogLevel.Information) .build(); connection.on('newMessage', (message) => { document.getElementById("messages").innerHTML = message; }); connection.start() .catch(console.error); </script> </body> </html>Artık neredeyse bitti. Son adım, SignalR hizmetinin bir bağlantı dizesini Azure Işlev ayarlarına ayarındır.
Azure portalın açık olduğu tarayıcıda portalın üst kısmındaki arama kutusundan adını arayarak önceden dağıttığınız SignalR Hizmeti örneğinin başarılı bir şekilde oluşturulduğundan emin olun. Açmak için örneği seçin.

SignalR Hizmeti örneğinin bağlantı dizelerini görüntülemek için Anahtarlar’ı seçin.

Birincil bağlantı dizesini kopyalayın. Ve aşağıdaki komutu yürütün.
func settings add AzureSignalRConnectionString "<signalr-connection-string>"
Azure Işlevini yerel olarak çalıştırın:
func startAzure Işlevi yerel olarak çalıştırıldıktan sonra. Tarayıcınızı kullanarak, ziyaret edin
http://localhost:7071/api/indexve geçerli yıldız sayısını görebilirsiniz. GitHub yıldızı veya yıldız işaretini alırsanız, birkaç saniyede bir yıldız sayısı yenileme alırsınız.Not
signalr bağlamasının Azure Depolama gerekir, ancak işlev yerel olarak çalışırken yerel depolama öykünücüsünü kullanabilirsiniz.
There was an error performing a read operation on the Blob Storage Secret Repository. Please ensure the 'AzureWebJobsStorage' connection string is valid.Depolama indirmeniz ve etkinleştirmeniz gerektiği için bir hata oluştu Emulator
Kaynakları temizleme
Bu uygulamayı kullanmaya devam etmeyecekseniz, herhangi bir ücret ödememek için aşağıdaki adımları kullanarak bu hızlı başlangıç tarafından oluşturulan tüm kaynakları silin:
Azure portalında, en solda bulunan Kaynak grupları’nı ve ardından oluşturduğunuz kaynak grubunu seçin. Alternatif olarak kaynak grubunu adıyla bulmak için arama kutusunu kullanabilirsiniz.
Açılan pencerede kaynak grubunu seçin ve Kaynak grubunu sil’e tıklayın.
Yeni pencerede, silmek için kaynak grubunun adını yazıp Sil öğesine tıklayın.
Sorun mu yaşıyorsunuz? Sorun giderme kılavuzunu deneyin veya bize bilgi verin.
Sonraki adımlar
Bu hızlı başlangıçta yerel olarak gerçek zamanlı sunucusuz bir uygulama oluşturup çalıştırdınız. Azure Işlevleri için SignalR hizmeti bağlamalarını kullanma hakkında daha fazla bilgi edinin. Daha sonra, SignalR hizmeti ile istemciler ve Azure Işlevleri arasında nasıl iletişim kurdukları hakkında daha fazla bilgi edinin.