Tüm Ürünler
Search
Belge Merkezi

Function Compute:Asynchronous tasks

Son Güncelleme:Oct 08, 2026

Bir işlevi asenkron olarak çağırdığınızda, çağrının başarılı olup olmadığını, başarısız mı olduğunu yoksa hâlâ çalışıyor mu olduğunu izlemek için yerleşik bir yöntem bulunmaz. Asenkron görev modu, her çağrı için kuyruğa alınmış durumdan tamamlanmış veya başarısız duruma kadar olan tüm durum geçişlerini kaydederek ve bu kayıtları gerçek zamanlı sorgulama ve yönetim için kullanılabilir hale getirerek bu sorunu çözer.

Görev modu etkinleştirildiğinde şunları yapabilirsiniz:

  • Yaşam döngüsünün herhangi bir noktasında bir görevin mevcut durumunu sorgulayın.

  • Kimliğine göre belirli bir çalışan görevi durdurun.

  • Her çağrıya benzersiz bir görev kimliği atayarak yinelenen yürütmeleri önleyin.

  • Kuyruk derinliğini, işlem gecikme süresini ve örnek düzeyindeki kaynak kullanımını izleyin.

  • CloudFlow kullanarak büyük ölçekli iş akışlarında görevleri koordine edin.

Görev modu, çağrılara ve yürütülere minimum düzeyde gecikme ekler. Bu gecikme için ücretlendirme yapılmaz. Faturalandırma ayrıntıları için bkz. Faturalandırmaya genel bakış.

Görev modunun çalışma şekli

Görev modu etkinleştirildiğinde, Function Compute her asenkron çağrı için tüm durum geçişlerini kaydeder. Bir görev gönderdikten sonra:

  1. Function Compute çağrı iletisini kuyruğa alır (durum: Enqueued).

  2. İleti kuyruktan çıkarılır ve uygun bir örneğin serbest kalmasını bekler (durum: Processed).

  3. Bir örnek görevi alır ve çalıştırır (durum: Running).

  4. Görev son duruma geçer: Succeeded, Failed, Stopped, Expired veya Invalid.

Durumu konsol, API veya Serverless Devs kullanarak herhangi bir adımda sorgulayabilirsiniz.

Sınırlamalar

Gecikmeye duyarlılık: Uygulamanız uçtan uca ortalama gecikme süresinin 100 ms'den az olmasını gerektiriyorsa görev modunu devre dışı bırakın.

Aktarım hızı: İşlevleri saniyede binlerce istek (RPS) veya daha yüksek oranlarda asenkron olarak çağırmanız gerekiyorsa görev modunu devre dışı bırakın.

Saklama süresi: Görev kayıtları oluşturulduktan sonraki 7 gün boyunca sorgulanabilir.

Desteklenen bölgeler: China (Hangzhou), China (Shanghai), China (Qingdao), China (Beijing), China (Zhangjiakou), China (Ulanqab), China (Shenzhen), China (Chengdu), China (Hong Kong), Singapore, UK (London), US (Silicon Valley), US (Virginia), Germany (Frankfurt), Malaysia (Kuala Lumpur), Indonesia (Jakarta), Thailand (Bangkok), Japan (Tokyo) ve South Korea (Seoul).

Görev durumları

Function Compute, her asenkron görev için aşağıdaki durumları izler:

Durum Açıklama
Enqueued Çağrı iletisi kuyruğa alınmıştır ve işlenmeyi beklemektedir.
Processed İleti kuyruktan çıkarılmıştır ve görev çağrılmayı beklemektedir.
Running Görev bir örnek üzerinde çalışmaktadır.
Succeeded Görev başarıyla tamamlanmıştır.
Failed Görev başarısız olmuştur.
Stopped Görev manuel olarak durdurulmuştur.
Stopping Sistem bir durdurma isteğini işlemektedir.
Expired Görev işlenmeden önce iletinin yaşam süresi (TTL) dolmuş; ileti atılmıştır.
Invalid Görev çalıştırılamamıştır; örneğin, işlev silindiği için.
Retrying Görev, bir yürütme hatasının ardından yeniden denenmektedir. Yeniden deneme başladığında durum Running olarak değişir.

Belirli bir görevin mevcut durumunu almak için GetAsyncTask öğesini çağırın. Görevleri duruma veya diğer koşullara göre filtrelemek için ListAsyncTasks öğesini çağırın.

Kubernetes işleri ile karşılaştırma

Asenkron görevleri çalıştırmak için Function Compute'ün asenkron görev özelliğini veya Kubernetes işlerini kullanabilirsiniz. Aşağıdaki tabloda iki yaklaşım karşılaştırılmaktadır.

Özellik Function Compute görevleri Kubernetes işleri
Kullanım senaryoları Hem onlarca milisaniye süren gerçek zamanlı görevler hem de onlarca saat süren çevrimdışı görevler için uygundur. Sabit iş yüküne sahip ve gönderim hızı ile gerçek zamanlı performans gereksinimleri düşük olan çevrimdışı görevler için uygundur.
Görev gözlemlenebilirliği Desteklenir. Kuyruktaki görev sayısı, görev yolu süresi ve görev durumu sorguları gibi ölçümler dahil olmak üzere kapsamlı gözlemlenebilirlik sağlar. Açık kaynak yazılımların manuel olarak entegre edilmesini gerektirir.
Görev örneklerinin otomatik ölçeklendirilmesi Desteklenir. Kuyruktaki görev sayısı ve kaynak kullanımına göre örnekleri otomatik olarak ölçeklendirir. Ölçeklendirme ve yük dengelemenin bir görev kuyruğu ile manuel olarak uygulanmasını gerektirir; bu da karmaşıklığı artırır.
Örnek ölçeklendirme hızı Milisaniye düzeyinde. Dakika düzeyinde.
Örnek kaynak kullanımı Uygun bir örnek türü seçin. Örnekler otomatik olarak ölçeklenir; yalnızca gerçek görev işleme süresine göre ücretlendirilirsiniz, bu da yüksek kaynak verimliliği sağlar. Bir iş gönderirken örnek türünü ve sayısını belirtmeniz gerekir. Otomatik ölçeklendirme ve yük dengeleme zor uygulandığından kaynak verimliliği düşüktür.
Görev gönderim aktarım hızı Tek bir kullanıcı saniyede on binlerce görev gönderebilir. Bir küme saniyede en fazla birkaç yüz iş başlatabilir.
Zamanlanmış veya gecikmeli gönderim Hem zamanlanmış hem de gecikmeli gönderimi destekler. Zamanlanmış gönderimi destekler ancak gecikmeli gönderimi desteklemez.
Görev yinelenmesini önleme Desteklenir. Desteklenmez.
Belirli bir görevi sonlandırma Desteklenir. Sınırlı destek. Görevler, görev örnekleri durdurularak dolaylı yoldan sonlandırılır.
Görev kısıtlama Desteklenir. Kısıtlama, kullanıcı veya işlev düzeyinde yapılandırılabilir. Desteklenmez.
Otomatik sonuç geri araması Desteklenir. Desteklenmez.
Geliştirme ve işletme maliyetleri Yalnızca görev işleme mantığını uygulamanız gerekir. Bir Kubernetes kümesinin bakımını gerektirir.

Görev modunu etkinleştirme

Bir işlev oluştururken görev modunu etkinleştirme

  1. Function Compute konsolu adresine giriş yapın. Sol gezinme bölmesinde Function Management > Function seçeneklerini seçin.

  2. Üst gezinme çubuğunda bir bölge seçin. Function sayfasında Create Function öğesine tıklayın.

  3. İletişim kutusunda Task Function seçeneğini belirleyin ve Create öğesine tıklayın. İşlev adını ayarlayın ve Create öğesine tıklayın.

  4. İşlev oluşturulduktan sonra işlev ayrıntıları sayfasına gidin ve Tasks sekmesine tıklayın. Görev modu varsayılan olarak etkindir.

Yapılandırma ayrıntıları için bkz. Görev işlevi oluşturma.

Mevcut bir işlevde görev modunu etkinleştirme

Başlamadan önce bir işlev oluşturduğunuzdan emin olun. Bkz. İşlev oluşturma.

  1. Function Compute konsolu adresine giriş yapın. Sol gezinme bölmesinde Functions öğesine tıklayın.

  2. Üst gezinme çubuğunda bir bölge seçin. Functions sayfasında hedef işleve tıklayın.

  3. İşlev ayrıntıları sayfasında Tasks sekmesine tıklayın, ardından Task Mode yanındaki Modify öğesine tıklayın.

  4. Task Mode panelinde Task Mode değerini Enable olarak ayarlayın ve Deploy öğesine tıklayın.

API aracılığıyla görev modunu etkinleştirme

asyncTask parametresini true olarak ayarlayarak PutFunctionAsyncInvokeConfig API'sini çağırın. İşlev için sonraki tüm asenkron çağrılar görev modunu kullanır.

{
  "asyncTask": true
}
Not

Görev modunu etkinleştirmek senkron çağrıları etkilemez. Görev modu yalnızca asenkron çağrılar için geçerlidir.

Görev gönderme

Konsoldan görev gönderme

  1. Function Compute konsolu adresine giriş yapın. Sol gezinme bölmesinde Functions öğesine tıklayın.

  2. Üst gezinme çubuğunda bir bölge seçin. Functions sayfasında hedef işleve tıklayın.

  3. İşlev ayrıntıları sayfasında Tasks sekmesine tıklayın, ardından Submit Task öğesine tıklayın.

  4. İletişim kutusunda bir görev kimliği oluşturma yöntemi seçin ve yürütme zamanını belirtin, ardından OK öğesine tıklayın.

Göndermeden önce test parametrelerini iletmek için Submit Task yanındaki ok simgesine tıklayın ve Configure Test Parameters seçeneğini belirleyin. Olay işlevleri için parametreler olay yükü olarak iletilir. HTTP işlevleri için parametreler HTTP parametreleri olarak iletilir.

Gönderimden sonra görev listesi Task Status, Task ID ve Instance ID bilgilerini gösterir.

API aracılığıyla görev gönderme

x-fc-invocation-type üst bilgisini Async olarak ayarlayarak InvokeFunction API'sini çağırın. Yinelenmeleri önlemek için özel bir görev kimliği atamak amacıyla x-fc-async-task-id üst bilgisini ekleyin.

Örnek: Bir görev gönderin ve durumunu yoklayın

Aşağıdaki örnek, asenkron bir görev göndermenin ve tamamlanana kadar durumunu sorgulamanın tam yaşam döngüsünü gösterir.

  1. İşlevde görev modunu etkinleştirin (tek seferlik kurulum):

    PUT /2023-03-30/functions/{functionName}/async-invoke-config
    Content-Type: application/json
    
    {
      "asyncTask": true
    }
  2. Özel bir görev kimliği ile görevi gönderin:

    POST /2023-03-30/functions/{functionName}/invocations
    x-fc-invocation-type: Async
    x-fc-async-task-id: my-task-001
  3. Görev kimliğini kullanarak görev durumunu sorgulayın:

    GET /2023-03-30/functions/{functionName}/async-tasks/my-task-001

    Yanıt, mevcut durumu içerir (Enqueued, Running, Succeeded vb.). Durum son duruma ulaşana kadar bu uç noktayı yoklayın.

Çağrı sırasında bir görev kimliği ayarlayan çalıştırılabilir bir kod örneği için bkz. InvokeFunction örneği (uluslararası site).

Görev durdurma

Konsoldan görev durdurma

İşlev ayrıntıları sayfasının Tasks sekmesinde görev listesinden ilgili görevi bulun ve durdurun.

API aracılığıyla görev durdurma

Görevin TaskID değeriyle StopAsyncTask API'sini çağırın. TaskID değerini bulmak için ListAsyncTasks API'sini çağırın.

Görev yinelenmesini önleme

Function Compute, yinelenen yürütmeleri önlemek için genel olarak benzersiz bir TaskID kullanır. Bir gönderim başarısız olursa (örneğin, zaman aşımı nedeniyle) aynı TaskID ile yeniden deneyin. Function Compute, yinelenen gönderimleri 409 hatasıyla reddeder.

Çağrı isteğine x-fc-async-task-id üst bilgisini ekleyerek her göreve bir TaskID atayın. Başarısız gönderimleri yeniden denerken bu kimliği kullanın.

Not

TaskID ayarlamadan RequestID ayarlarsanız Function Compute, TaskID değerini otomatik olarak RequestID olarak ayarlar. TaskID değerini doğrudan ayarlayın ve RequestID ayarını boş bırakın.

Olay tetikleyicileri ile görevleri tetikleme

Aşağıdaki tetikleyiciler asenkron çağrıyı destekler ve asenkron görevleri tetikleyebilir:

Önemli

HTTP tetikleyicileri ve EventBridge ile entegre tetikleyiciler için Invocation Method ayarını Async Invocation olarak yapılandırın.

Görevleri izleme

Görev kuyruğu derinliğini izlemek, hataları tespit etmek ve zaman aşımlarına gerçek zamanlı yanıt vermek için Function Compute izleme ölçümlerini kullanın.

Ölçümleri görüntüleme

Başlamadan önce bir işlev oluşturduğunuzdan emin olun. Bkz. İşlev oluşturma.

  1. Function Compute konsolu adresine giriş yapın. Sol gezinme bölmesinde Functions öğesine tıklayın.

  2. Üst gezinme çubuğunda bir bölge seçin. Function sayfasında hedef işleve tıklayın.

  3. İşlev ayrıntıları sayfasında Monitoring sekmesine tıklayın.

    • Asenkron çağrı ölçümlerini görüntülemek için Function Metrics öğesine tıklayın: Asynchronous Invocation Processing (count), Asynchronous Invocation Processing Latency (ms), Asynchronous Invocation Trigger Events (count) ve Asynchronous Requests Backlogs (count).

    • Asenkron görev örnekleri için örnek düzeyindeki kaynak kullanımını görüntülemek için Instance Metrics öğesine tıklayın.

Not

Örnek düzeyindeki ölçümler günlük kaydı özelliğinin etkinleştirilmesini gerektirir. Bkz. Günlük kaydı yapılandırma.

İzleme ölçümlerinin tam listesi için bkz. İzleme ölçümleri.

Uyarı kuralları ayarlama

Bir ölçüm için uyarı ayarlamak amacıyla ölçüm grafiğinin sağ üst köşesindeki zil simgesine tıklayın. Create Metric-based Alert Rule panelinde uyarı koşullarını ve eşik değerini ayarlayın, ardından OK öğesine tıklayın.

Örnek: Bekleyen asenkron çağrı sayısı 5 veya daha fazlasına ulaştığında orta önem derecesinde bir uyarı gönderin; uyarı 7/24 DingTalk, e-posta, telefon ve Webhook üzerinden iletilir.

CloudFlow ile görevleri orkestre etme

Büyük ölçekli iş akışlarında asenkron görevleri koordine etmek için Function Compute'ü CloudFlow ile entegre edin. CloudFlow, her görevin durum geçişlerini izler, yeniden deneme mantığınızı uygular ve önceden tanımlanmış adımların güvenilir şekilde yürütülmesini sağlar. Desteklenen CloudFlow durumları arasında Pass, Map ve Parallel bulunur.

Entegrasyon ayrıntıları için bkz. Function Compute ile entegrasyon.

Ön koşullar

Başlamadan önce şunları yaptığınızdan emin olun:

İş akışı oluşturma ve çalıştırma

  1. CloudFlow konsolu adresine giriş yapın. Üst gezinme çubuğunda bir bölge seçin.

  2. Sol gezinme bölmesinde Workflows öğesine tıklayın. Workflows sayfasında Create Workflow öğesine tıklayın.

  3. Create Workflow iletişim kutusunda bir oluşturma yöntemi ve iş akışı modu seçin. CloudFlow iki modu destekler: Standard ve Express. Ayrıntılar için bkz. Standard iş akışları ve Express iş akışları ve Boş tuvalden iş akışı oluşturma.

  4. İş akışını tanımlayın. Akış ayrıntıları sayfasının sağ üst köşesinde YAML öğesine tıklayın. Kod düzenleyicide akış tanımını girin ve ardından Save öğesine tıklayın. Aşağıdaki örnek, bir Function Compute işlevini asenkron olarak çağırır ve iş akışı sona ermeden önce tamamlanmasını bekler (TaskMode: RequestComplete):

    Type: StateMachine
    Name: MyFlow
    SpecVersion: v1
    StartAt: InvokeFunction
    States:
      - Type: Task
        Name: InvokeFunction
        Action: FC:InvokeFunction
        TaskMode: RequestComplete
        Parameters:
          invocationType: Async
          resourceArn: acs:fc:us-west-1:103435468****:functions/func-i1****/LATEST
        End: true
  5. Çalıştırma rolünü yapılandırın. Sağ üst köşede Configure Workflow öğesine tıklayın. Bir Execution Role seçin ve Save öğesine tıklayın.

    Not

    Role, AliyunFCInvocationAccess ilkesinin eklenmiş olması gerekir.

  6. Akış ayrıntıları sayfasında iş akışını test etmek için Execute öğesine tıklayın.

Sonraki adımlar