Tag Archives: WebJobs

Vývoj cloudových aplikací – 02 Azure AppService, WebJob, SQL, SendGrid [MFF UK NSWI152, LS 2018]

Záznam z druhé vyučovací hodiny (27.2.2018) semináře Vývoj cloudových aplikací (NSWI152) pro MMF UK v letním semestru 2017/2018. Je publikován na našem HAVIT YouTube Channelu.

Dotčená témata

  • Azure App Service
    • Creating simple Web Site
    • Deployment from Visual Studio
    • Deployment from GitHub
  • Web Jobs – Creating & Deployment
  • Azure SQL database – Creating & Accessing from Visual Studio 2017
  • Azure SendGrid mail service

Záznam je v angličtině. Ukázalo se, že na hodinu přišlo více zahraničních studentů než českých, tak jsme se domluvili takto.

Bohužel mi zhruba po 30 minutách skončil audio záznam z klopového mikrofonu, zbytek je tedy jen velmi nekvalitní podoba z notebooku.

Quartz .NET – sekvenční zřetězení jobů [Martin Havel, HAVIT Vzdělávací okénko 2.11.2017]

Záznam z interního vzdělávacího okénka HAVIT z 2.11.2017 je publikován na našem HAVIT YouTube Channel. Téma prezentoval Martin Havel:

Dotčená témata:

  • Co je Quartz
  • Sekvenční spouštění úloh
  • Tři způsoby, jak se zřetězením jobů vypořádat

 

Azure PaaS – Praktické zkušenosti, tipy a triky – slides a záznam [TechEd Praha 05/2017]

Slides, dema a záznam z mé přednášky pro TechEd DevCon Praha z 16.5.2017:

Záznam z přednášky je publikován na našem HAVIT YouTube Channel.

Dotčená témata

  • IaaS vs. PaaS vs. XaaS
  • Motivace k Azure PaaS vs. Co vás může odradit
  • Klíčové služby
    • App Service
    • Azure SQL
    • Azure Storage
    • Application Insights
  • Praktické scénáře
    • Deployment (MSDeploy)
    • Práce se soubory IFileStorage
    • Práce s časem (DateTime.Now v UTC vs. ITimeService)
    • Posílání e-mailů (SendGrid)
    • Naplánované úlohy (Quartz.NET, WebJobs, WebJobs SDK, Dashboard)

Azure WebJob se občas spouští dvakrát

Problém

Máme v Azure nasazeno několik Azure Website spolu s naplanovanými (scheduled) web job. Řešíme situaci, kdy se webjob spustí dvakrát, zhruba v rozmezí jedné minuty. (V našem konkrétním případě posíláme notifikační emaily a tyto nám přijdou dva.)

Analýzou historie zjišťuji, že scheduler se webjob pokusil úlohu spustit dokonce třikrát.

webjob-history

Přičemž log jednotlivých pokusů vypadá takto:

  1. Http Action – Request to host ‚(…).scm.azurewebsites.net‘ failed: The timeout (30 seconds) was reached.
  2. Http Action – Response from host ‚(…).scm.azurewebsites.net‘: ‚Conflict‘ Response

    Body: Cannot start a new run since job is already running.
  3. Http Action – Response from host ‚(…).scm.azurewebsites.net‘: ‚Accepted‘ Response

Položky logu interpretuji takto:

  • Bod 1 úspěšně spustit webjob, ale nebyl schopen v intervalu 30 sekund toto zjistit.
  • Bod 2 se pokusil spustit webjob, ale ten již běžel, takže byl oznámen konflikt.
  • Bod 3 se opět pokusil spustit webjob, ten již doběhl, takže byl webjob úspěšně (ve skutečnosti podruhé) spuštěn.

Řešení

Po přečtení

se pokouším interpretovat (snad) klíčovou větu „If your site runs continuous web jobs, you should enable Always On, or the web jobs may not run reliably“ tak, že Always On zapínám i pro náš scheduled Web Job. Pomáhá to.

Volba Always On se nastavuje v Azure portálu, v nastavení Azure Website, se přepínačem Always On na záložce Configure.