ScheduledTask[expr,timespec]
timespec で定義されるスケジュールで評価される,スケジュールされたタスクを表す.
ScheduledTask
ScheduledTask[expr,timespec]
timespec で定義されるスケジュールで評価される,スケジュールされたタスクを表す.
詳細とオプション
- CloudDeploy[ScheduledTask[…]]は,スケジュールされたタスクがクラウド内で実行されるように配備する.
- SessionSubmit,LocalSubmit,CloudSubmitは,ローカルシステムあるいはクラウドの現行セッションのバックグラウンドで評価されるようにスケジュールされたタスクを送信する.
- スケジュールされたタスクは,TaskSuspend,TaskResume等の関数を使って制御することができる.
- 引数 expr は,評価するWolfram言語のコード,CloudObject,Wolfram言語の入力を含むFileのいずれでもよい.
- 次の時間 period 指定を与えることができる.
-
"Hourly" 1時間に1回実行 "Daily" 1日に1回実行 "Weekly" 1週間に1回実行 "Monthly" 1ヶ月に1回実行 "Yearly" 1年に1回実行 Quantity[...] 指定された時間間隔で実行 - 次の timespec 指定を与えることができる.
-
period period ごとに実行 {period} period の後で1回実行 {period, count} count 回だけ実行 - 次の指定でタスクの実行時期を制限することができる.
-
{start,timespec} 日付 start から実行 {timespec,end} 日付 end に終了 {start,timespec,end} 日付 start から end まで実行 - start と end のパラメータはDateObjectとして,あるいは他の時間指定で与えることができる.
- 追加的な timespec 指定を与えることができる.
-
DateObject[patt] 指定されたパターンにマッチする時に実行 "cronspec" Unixのクロン指定で指定された時に実行 Now すぐに実行 None オンデマンドのみで実行 - DateObject[patt]では,パターン patt の形式は{y,m,d,h,m,s}である.ただし,後半の要素は除外することができる.各要素は,整数,n1|n2|…の形式の整数の選択,あるいは可能な任意の値を表す_でよい.日の要素に関しては,文字通りの日を,Monday等の曜日を表す記号で置換することもできる.
- 使用可能なオプション
-
AutoRemove False 最終のスケジュールされた実行後にタスクを取り除く NotificationFunction Automatic 通知の出し方 TimeZone Automatic スケジュールの時刻帯 - NotificationFunctionの目的で,出力が$FailedオブジェクトまたはFailureオブジェクトのときはタスクが失敗したとみなされる.
- クラウドでは,スケジュールされたタスクが実行される正確な時刻は,一般に,負荷分散の必要条件によって決定される.
- クラウドにおけるタスクを反復する際のタスクとタスクの間の最短時間は,クラウド設定とその指針によって決定される.一般に,1時間の何分の1かである.
例題
すべて開く すべて閉じる例 (4)
obj = SessionSubmit[ScheduledTask[Print[Now, " ", MemoryInUse[]], Quantity[1, "Minutes"]]]Print出力はメッセージウィンドウに表示される.
TaskRemove[obj]obj = LocalSubmit[ScheduledTask[Now, Quantity[15, "Seconds"]],
HandlerFunctions -> <|"ResultReceived" -> Print|>,
HandlerFunctionsKeys -> "EvaluationResult"
]Print出力はメッセージウィンドウに表示される.
TaskRemove[obj]次の1ヶ月間,タスクの所有者に毎日気温を電子メールで通知するスケジュールされたクラウドタスクを作る:
obj = CloudSubmit[ScheduledTask[SendMail[<|"To" -> $CloudUserID, "Subject" -> DateString[], "Body" -> AirTemperatureData[]|>], "Hourly"]]TaskRemove[obj]日付と気温を1時間ごとに記録するスケジュールされたクラウドタスクを配備する:
obj = CloudDeploy[ScheduledTask[PutAppend[{Now, AirTemperatureData[]}, CloudObject["results.log"]], "Hourly"]]このタスクを手動で実行してスケジュールされている次の実行を待たずにテストする:
TaskExecute[obj]ReadList[CloudObject["results.log"]]TaskRemove[obj]スコープ (9)
時間指定 (9)
task = SessionSubmit[ScheduledTask[Print[Now], None]]TaskExecute[task]TaskRemove[task]timespec のNowを使って即座に実行されるタスクを現行のカーネルセッションで送信する:
task = SessionSubmit[ScheduledTask[MessageDialog["Done"], Now]]Tasks[]task = CloudSubmit[ScheduledTask[SendMail["Done"], Now]]FileExistsQ[CloudObject["uuid:" <> task["TaskUUID"]]]task = CloudDeploy[ScheduledTask[SendMail["Done with deployed task."], Now]](CloudDeployではなくCloudSubmitで作成した)タスクは,配備され実行された後もクラウドに存在し続ける:
FileExistsQ[task]TaskRemove[task]実行の進捗状況を表示しながら合計10回毎秒実行されるタスクを作成する:
n = 0;
ProgressIndicator[Dynamic[n], {0, 10}]
task = SessionSubmit[ScheduledTask[Print[Now, " ", n++], {Quantity[1, "Seconds"], 10}]]明日からカウントダウンの電子メールを毎日送信するタスクを配備する:
thisYear = First[DateList[]]
task = CloudDeploy[ScheduledTask[SendMail[StringTemplate["`1` left in `2`"][DateObject[{thisYear + 1, 1, 1}] - Today, thisYear]], {Tomorrow, "Daily"}]]このタスクを検査するために,すぐに実行するようにトリガする:
TaskExecute[task]TaskRemove[task]1年の終りまで毎日カウントダウンの電子メールを送信するタスクを配備する:
thisYear = First[DateList[]]
beginningOfNextYear = DateObject[{thisYear + 1, 1, 1}]
task = CloudDeploy[ScheduledTask[SendMail[StringTemplate["`1` left in `2`"][beginningOfNextYear - Today, thisYear]], {"Daily", beginningOfNextYear}]]このタスクを検査するために,すぐに実行するようにトリガする:
TaskExecute[task]TaskRemove[task]明日から始めて1年の終わりまで毎日カウントダウンの電子メールを送信するタスクを配備する:
thisYear = First[DateList[]]
beginningOfNextYear = DateObject[{thisYear + 1, 1, 1}]
task = CloudDeploy[ScheduledTask[SendMail[StringTemplate["`1` left in `2`"][beginningOfNextYear - Today, thisYear]], {Tomorrow, "Daily", beginningOfNextYear}]]このタスクを検査するために,すぐに実行するようにトリガする:
TaskExecute[task]TaskRemove[task]task = CloudDeploy[ScheduledTask[SendMail["Reminder: office hours today, 11-12"], DateObject[{_, _, Monday | Wednesday | Thursday, 7}]]]ScheduledTaskInformation[task, "NextRunDate"]TaskRemove[task]"cronspec"指定を使って週日に金融商品の始値を記録するようにスケジュールされたタスクを作成する:
obj = CloudDeploy[ScheduledTask[{Now, FinancialData["QQQ", "Open"]}, "* 10 * * 1,2,3,4,5"]]TaskRemove[obj]毎日1回クラウド内でタイムスタンプを更新するようにスケジュールされたクラウドタスクを作成する:
time = DateList[];var = CloudSave[time];obj = With[{co = var}, CloudSubmit[ScheduledTask[time = DateList[];CloudSave[time, co], "Daily"]]
]CloudGet[var]TaskExecuteを使ってスケジュールされたタスクのクラウドオブジェクトを実行する:
TaskExecute[obj]CloudGet[var]TaskRemove[obj];一般化と拡張 (1)
TaskSuspendを使って,クラウドのスケジュールされたタスクの実行を一時停止する:
obj = CloudSubmit[ScheduledTask[TimeObject[], "Daily"]]TaskSuspend[obj]TaskRemove[obj]オプション (1)
NotificationFunction (1)
通知によって,指定されたグループの人々にタスク評価のステータスのメッセージを送ることができる.毎回実行後に複数のグループに通知するタスクを配備する:
co = CloudSubmit[ScheduledTask[{Now, AirTemperatureData[]}, "Daily",
NotificationFunction -> {{$CloudUserID, "a@b.com"} -> All}
]]TaskExecute[co]TaskExecute[co]TaskRemove[co]アプリケーション (2)
スケジュールされたタスクに基づいて警告の電子メールを送るアプリケーションを作る:
CheckForFullMoon[] := If[MoonPhase[Tomorrow] > 0.99, SendLunarAlertMail[]]SendLunarAlertMail[] := SendMail[<|"To" -> $CloudUserID, "Subject" -> "Alert: Full Moon", "Body" -> {"There will be a full moon tomorrow: " <> DateString[Tomorrow], "
", MoonPhase[Tomorrow, "Icon"], "
", "http://www.wolframalpha.com/input/?i=moon+phase"}|>]毎日午後6時に評価し,翌日の月相をチェックするようにスケジュールされたタスクを作る:
obj = CloudSubmit[ScheduledTask[CheckForFullMoon[], DateObject[{_, _, _, 18}]]]TaskRemove[obj]TimeZone (1)
$TimeZoneをGMT+2に設定して使用するタスクを配備する:
task = CloudDeploy[ScheduledTask[CloudPut[{$TimeZone, $TimeZoneEntity, Now, DateString[]}, "result"], None, TimeZone -> 2]]TaskExecute[task]実行されるまで少し待った後,時刻帯設定が適用されたことに注意しつつそれが書き込んだ結果オブジェクトから読み取る:
CloudGet["result"]DeleteObject[task]考えられる問題 (3)
CloudSubmit[ScheduledTask[{Now, AirTemperatureData[]}, {Tomorrow, 3600}]]obj = CloudSubmit[ScheduledTask[{Now, AirTemperatureData[]}, {Tomorrow, {3600, Infinity}}]]TaskRemove[obj];暦に合わせる名前付きの周期の"Monthly"および"Yearly"は,配備された日付が次の月(年)には存在しない場合は,その月(年)には実行されない(例:"Yearly"タスクが2月29日に配備された場合):
task = CloudDeploy[ScheduledTask[{Now, AirTemperatureData[]}, "Yearly"]]ScheduledTaskInformation[task, "NextRunDate"]DateObject[{2028, 2, 29, 18, 33, 0}, "Instant", "Gregorian", -6.]TaskRemove[task]この問題を避けるためには,月末に向けて問題が起こりうる日付を避けるように開始する日付を制御するとよい:
task = CloudDeploy[ScheduledTask[{Now, AirTemperatureData[]}, {DateObject["2024-02-28"], "Yearly"}]]ScheduledTaskのクラウド評価には,メモリ使用量と評価時間の制限がある.その制限はユーザのクラウドプランによって決定される.具体的な数値はCloudAccountDataの"ScheduledTaskMemoryLimit"および"ScheduledTaskEvaluationTimeLimit"で確認できる:
CloudAccountData /@ {"ScheduledTaskMemoryLimit", "ScheduledTaskEvaluationTimeLimit"}関連するガイド
関連するワークフロー
- スケジュールに従ってレポートを生成する
テキスト
Wolfram Research (2014), ScheduledTask, Wolfram言語関数, https://reference.wolfram.com/language/ref/ScheduledTask.html (2017年に更新).
CMS
Wolfram Language. 2014. "ScheduledTask." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2017. https://reference.wolfram.com/language/ref/ScheduledTask.html.
APA
Wolfram Language. (2014). ScheduledTask. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/ScheduledTask.html
BibTeX
@misc{reference.wolfram_2026_scheduledtask, author="Wolfram Research", title="{ScheduledTask}", year="2017", howpublished="\url{https://reference.wolfram.com/language/ref/ScheduledTask.html}", note=[Accessed: 17-October-2026]}
BibLaTeX
@online{reference.wolfram_2026_scheduledtask, organization={Wolfram Research}, title={ScheduledTask}, year={2017}, url={https://reference.wolfram.com/language/ref/ScheduledTask.html}, note=[Accessed: 17-October-2026]}