JS 云服務 Deno Depoly 宣布,推出定時運行功能 Deno Cron

如果需要定時執行 JS 腳本,以后多一個選項。

Web 構建日益復雜。編寫現代軟件包括利用云基礎設施、剖析模板代碼和管理復雜的配置,而開發人員只想專注于編寫業務邏輯。

Deno 旨在通過刪除配置和不必要的模板,從根本上簡化 Web 開發。我們將無服務器數據庫 Deno KV 和 Deno Queues(一種卸載任務或安排未來工作的方法)直接內置到運行時中,因此將它們添加到應用程序中只需幾行代碼即可。

今天,我們很高興通過引入 Deno Cron 來簡化 Web 開發,這是一種創建預定作業的簡單方法:

Deno.cron("Sample cron job", "*/10 * * * *", () => {console.log("This will run every 10 minutes");
});

使用 Deno Cron

Deno.cron()(從 1.38 開始可在 `–unstable`` 標志后面使用)是一個帶有三個參數的函數:

  • name,計劃任務的名稱
  • schedule,它使用 Unix cron 格式并且時間采用 UTC 時區
  • handler,按提供的時間表執行的函數

與 UNIX/Linux 上的 cron 不同,Deno Cron 執行不會重疊。這意味著,如果您安排某項任務每 10 分鐘運行一次,但該任務需要 30 分鐘才能完成,Deno Cron 會自動跳過下一次計劃運行,直到該任務完成。重疊的 cron 作業可能會導致意想不到的問題,并且需要額外繁瑣的邏輯來避免,但 Deno Cron 完全回避了這一點。

我們還致力于支持 JavaScript 友好的 API,用于指定 cron 計劃。

Deno Deploy 上的 Deno Cron

在 Deno Deploy(我們的多租戶分布式無服務器 JavaScript 平臺)上,Deno.cron() 會被自動檢測和管理,因此您無需擔心任何事情。

你可以在沒有 Web 服務器的情況下運行 cron 作業,甚至不需要一致的傳入請求來保持隔離活動。這是因為每當部署您的項目時,Deno Deploy 都會自動檢測您的 cron 作業并對其進行評估。當您的處理程序運行時,Deno Deploy 會自動按需啟動隔離來運行它們。

我們還在 Deno Deploy 面板中添加了一個新的 Cron 選項卡,它可以顯示項目中所有激活的 cron 作業:

項目中的新 cron 選項卡顯示活動的 cron 作業

您的 cron 作業將顯示在日志中

要修改或停止現有的 cron,請更改代碼并創建新的部署。例如,如果從代碼中移除 Deno.cron 并進行部署,這些作業將不再計劃運行。

您的 Deno Cron 處理程序可以執行各種操作,例如更新 Deno KV 中的狀態、ping 一個網站、發送一封電子郵件、啟動數據庫備份、定期調用 API 等等。

它在 Deno Deploy 上如何工作?

即使沒有 Web 服務器處理請求,Deno Deploy 到底如何知道代碼中存在 cron

創建項目的新生產部署時,會使用短暫的 V8 隔離來評估項目的頂層范圍并發現任何 Deno.cron 定義。然后,全局 cron 調度程序會根據項目的最新 cron 定義進行更新,其中包括對現有 crons、新 crons 和已刪除 crons 的更新。

全局 cron 調度器是一項可靠的服務,負責根據指定的計劃調度和分派 cron 作業。在調度過程中,按需 v8 隔離程序會啟動,使用相同的生產部署執行作業。

// deno-cron-weatherconst db = await Deno.openKv();// Hourly cron job to write weather data time series to Deno KV
Deno.cron("Write weather data to Deno KV", "0 * * * *", async () => {console.log("Pull weather data and set to Deno KV");const res = await fetch('https://api.open-meteo.com/v1/forecast?latitude=34.0522&longitude=-118.2437&hourly=temperature_2m,precipitation&timezone=America%2FLos_Angeles');const body = await res.json();const date = new Date(Date.now()).toString();await db.set(["weather", date], {temperature: body.hourly.temperature_2m[0],precipitation: body.hourly.precipitation[0]});
});// HTTP server to get the weather data time series
Deno.serve(async (_req) => {const entries = db.list({ prefix: ["weather"] });let responseString = "";for await (const entry of entries) {responseString += `${entry.key[1]}: ${entry.value.temperature}°C with ${entry.value.precipitation}mm precipitation\n`;}return new Response(responseString);
})

在 Deno Deploy 上使用 Deno Cron 可以輕松創建 cron 作業并將其托管在云中,無需任何配置,只需幾分鐘即可完成。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/213037.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/213037.shtml
英文地址,請注明出處:http://en.pswp.cn/news/213037.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

網絡攻擊(三)--攻擊階段

5. 威脅建模階段 目標 了解威脅建模階段的工作內容 工作內容 威脅建模主要使用在情報搜集階段所獲取到的信息,來標識出目標系統上可能存在的安全漏洞與弱點。 在進行威脅建模時,確定最為高效的攻擊方法、所需要進一步獲取到的信息,以及從…

【前端】CSS浮動(學習筆記)

一、浮動 1、傳統網頁布局 網頁布局的本質:用 CSS 來擺放盒子,把盒子擺放到相應位置。 CSS 提供了三種傳統布局方式(盒子如何進行排列順序) 普通流(標準流)浮動定位 實際開發中,一個頁面基…

Go 反射技術判斷結構體字段數據為空

Api介紹 在Go語言中,反射API用于在運行時檢查類型信息、獲取和修改變量的值以及調用對象的方法。反射API包含了一組函數和類型,可以在程序運行時動態地操作對象。 以下是一些常用的反射API: reflect.TypeOf:返回一個值的類型信息。…

并查集基礎模板

題目我上面有人兒 代碼 #include <bits/stdtr1c.h> using namespace std; const int N 1005; int f[N]; int n; int siz[N]; // 初始化并查集 // void init() // { // for (int i 1; i < n; i) // { // f[i] i; // 初始化所有的節點都是自己的父節點 //…

Tomcat頭上有個叉叉

問題原因&#xff1a; 這是因為它就是個空的tomcat,并沒有導入項目運行 解決方案&#xff1a; war模式&#xff1a;發布模式&#xff0c;正式發布時用&#xff0c;將WEB工程以war包的形式上傳到服務器 war exploded模式&#xff1a;開發時用&#xff0c;將WEB工程的文件夾直接…

【網絡協議】LACP(Link Aggregation Control Protocol,鏈路聚合控制協議)

文章目錄 LACP名詞解釋LACP工作原理互發LACPDU報文確定主動端確定活動鏈路鏈路切換 LACP和PAgP有什么區別&#xff1f;LACP與LAG的關系LACP模式更優于手動模式LACP模式對數據傳輸更加穩定和可靠LACP模式對聚合鏈路組的故障檢測更加準確和有效 推薦閱讀 LACP名詞解釋 LACP&…

day11 前k個高頻元素

// 小頂堆 class mycomparison { public: bool operator()(const pair<int, int>& lhs, const pair<int, int>& rhs) { return lhs.second > rhs.second; } }; vector<int> topKFrequent(vector<int>& nums, int k) { // 要統計元素出現…

智能外呼有什么好處?

智能外呼是一種自動化的電話營銷方式&#xff0c;利用AI智能外呼技術和大量數據分析&#xff0c;幫助企業實現與客戶之間的高效、精準、個性化的客戶溝通&#xff0c;還可以在客戶服務、市場營銷和銷售等方面帶來助力。那么&#xff0c;智能外呼有什么好處呢&#xff1f; 1. 提…

spring IOC bean為什么默認是單例的

首先解釋一下什么是單例 bean&#xff1f; 單例的意思就是說在 Spring IoC 容器中只會存在一個 bean 的實例&#xff0c;無論一次調用還是多次調用&#xff0c;始終指向的都是同一個 bean 對象 用代碼來解釋單例 bean public class UserService {public void sayHello() {Syst…

交叉編譯工具鏈makefile

linux系統默認搜索頭文件地址&#xff1a;/usr/include/文件夾&#xff1b; Windows系統默認搜索頭文件地址&#xff1a;不同軟件好像可以設置不同的地址&#xff1b;例如visual studio好像可以設置附加包含目錄&#xff0c;包含目錄等 Linux系統庫文件路徑&#xff1a;/lib文…

通過生成模擬釋放無限數據以實現機器人自動化學習

該工作推出RoboGen&#xff0c;這是一種生成機器人代理&#xff0c;可以通過生成模擬自動大規模學習各種機器人技能。 RoboGen 利用基礎模型和生成模型的最新進展。該工作不直接使用或調整這些模型來產生策略或低級動作&#xff0c;而是提倡一種生成方案&#xff0c;該方案使用…

命運天注定?

羅翔老師經常說&#xff1a;人這一生&#xff0c;能自己決定的也許只有5&#xff05;&#xff0c;有95%是你決定不了的。 不是說事在人為&#xff0c;人定勝天嗎&#xff1f; 哪吒也在電影的高潮喊出了&#xff1a;我命由我不由天。 聽上去很熱血&#xff0c;但實際咱們每個…

Java泛型:詳解使用技巧及舉例說明

Java泛型&#xff1a;詳解使用技巧及舉例說明 1. 引言 Java泛型是一項強大的編程概念&#xff0c;它允許我們編寫通用的代碼&#xff0c;在編寫代碼時不需要預先指定具體的數據類型。泛型的引入解決了在傳統的編程中需要頻繁進行類型轉換的問題&#xff0c;提高了代碼的安全性…

simulink MATLABFunction模塊中實時函數調用函數的使用

樣例 function Predyy matlabceshi(input, Time_s) input1 input; Time_s1 Time_s; Predyy ee(input1) mm(Time_s1); end 上面是主要部分&#xff0c;下面是被調用部分 function A ee(input1) A input1 * 100; end function B mm(Time_s1) B Time_s1 * 100; end 模型…

算法競賽---反悔貪心

反悔貪心 Work Scheduling G 什么是返回貪心呢&#xff0c;就是先選擇&#xff0c;遇到更好的之后在反悔選擇更好的&#xff0c;這是符合貪心的邏輯的。 #include <bits/stdc.h> // https://www.luogu.com.cn/problem/P2949 using namespace std; struct node {int d,…

Linux(ubuntu)利用ffmpeg+qt設計rtsp_rtmp流媒體播放器(完全從0開始搭建環境進行開發)

一、前言 從0開始搭建Linux下Qt、ffmpeg開發環境。 從安裝虛擬機開始、安裝Linux(Ubuntu)系統、安裝Qt開發環境、編譯ffmpeg源碼、配置ffmpeg環境、編寫ffmpeg項目代碼、完成項目開發。 完全從0開始搭建環境進行開發 完全從0開始搭建環境進行開發 完全從0開始搭建環境進行開…

公務員國考省考小白需知

文章目錄&#xff1a; 一&#xff1a;分類 1.國考 2.省考 二&#xff1a;必備途徑 1.相關網站 1.1 官網 1.1.1 必須知道的 1.1.2 比較好用的 1.1.3 事業單位的 1.2 機構 ??1.3 時事 ??1.4 資源 1.5 題庫 1.6 真題 ?2.相關公主號 3.應用 4.群聊如何找 三…

笙默考試管理系統-MyExamTest----codemirror(53)

笙默考試管理系統-MyExamTest----codemirror&#xff08;53&#xff09; 目錄 笙默考試管理系統-MyExamTest----codemirror&#xff08;51&#xff09; 一、 笙默考試管理系統-MyExamTest----codemirror 二、 笙默考試管理系統-MyExamTest----codemirror 三、 笙默考試…

【TwinCAT學習筆記 1】TwinCAT開發環境搭建

寫在前面 作為技術開發人員&#xff0c;開啟任何一項開發工作之前&#xff0c;首先都要搭建好開發環境&#xff0c;所謂磨刀不誤砍材工&#xff0c;一定要有耐心&#xff0c;一次不行卸載再裝。我曾遇到過一個學生&#xff0c;僅搭建環境就用了兩周&#xff0c;這個過程也是一…

ATM的轉賬

【 1 】明確我們要實現的功能 # 用戶功能菜單 # 1.注冊 # 2.登陸 # 3.取款 # 4.轉賬 # 5.充值余額 # 6.查看流水 # 7.查看銀行信息(查看自己…