[{"data":1,"prerenderedAt":1111},["ShallowReactive",2],{"docs:\u002Fko\u002Fguide\u002Fschedule":3},{"page":4,"untranslated":1110,"translated":1103},{"id":5,"title":6,"body":7,"description":1100,"extension":1101,"meta":1102,"navigation":1103,"path":1104,"publishedAt":1105,"seo":1106,"stem":1107,"updatedAt":1108,"__hash__":1109},"docs_ko\u002Fko\u002Fguide\u002Fschedule.md","정기 실행",{"type":8,"value":9,"toc":1083},"minimark",[10,14,22,27,203,247,263,317,356,378,382,393,397,411,413,421,429,472,476,497,537,555,561,565,587,625,647,685,689,701,705,711,720,724,740,744,760,767,770,774,798,811,815,842,846,858,862,870,1018,1034,1079],[11,12,6],"h1",{"id":13},"定期実行",[15,16,17,21],"p",{},[18,19,20],"code",{},"schedules","에 정의한 잡과 Flow를 Tsumugi는 일정 간격으로, 또는 cron 식으로 지정한 시각에 실행합니다.",[23,24,26],"h2",{"id":25},"定義","정의",[28,29,34],"pre",{"className":30,"code":31,"language":32,"meta":33,"style":33},"language-ts shiki shiki-themes github-light github-dark","const tsumugi = defineTsumugi({\n  performers,\n  flows,\n  schedules: {\n    'poll-inbox': { binding: 'PollInbox', payload: {}, everyMs: 5 * 60 * 1000 },\n    nightly: {\n      flow: 'REPORT',\n      input: ({ scheduledAt }) => ({ until: scheduledAt }),\n      cron: '0 9 * * *',\n      timeZone: 'Asia\u002FTokyo',\n    },\n  },\n  auth: \u002F* ... *\u002F,\n});\n","ts","",[18,35,36,60,66,72,78,111,117,129,151,162,173,179,185,197],{"__ignoreMap":33},[37,38,41,45,49,52,56],"span",{"class":39,"line":40},"line",1,[37,42,44],{"class":43},"szBVR","const",[37,46,48],{"class":47},"sj4cs"," tsumugi",[37,50,51],{"class":43}," =",[37,53,55],{"class":54},"sScJk"," defineTsumugi",[37,57,59],{"class":58},"sVt8B","({\n",[37,61,63],{"class":39,"line":62},2,[37,64,65],{"class":58},"  performers,\n",[37,67,69],{"class":39,"line":68},3,[37,70,71],{"class":58},"  flows,\n",[37,73,75],{"class":39,"line":74},4,[37,76,77],{"class":58},"  schedules: {\n",[37,79,81,85,88,91,94,97,100,103,105,108],{"class":39,"line":80},5,[37,82,84],{"class":83},"sZZnC","    'poll-inbox'",[37,86,87],{"class":58},": { binding: ",[37,89,90],{"class":83},"'PollInbox'",[37,92,93],{"class":58},", payload: {}, everyMs: ",[37,95,96],{"class":47},"5",[37,98,99],{"class":43}," *",[37,101,102],{"class":47}," 60",[37,104,99],{"class":43},[37,106,107],{"class":47}," 1000",[37,109,110],{"class":58}," },\n",[37,112,114],{"class":39,"line":113},6,[37,115,116],{"class":58},"    nightly: {\n",[37,118,120,123,126],{"class":39,"line":119},7,[37,121,122],{"class":58},"      flow: ",[37,124,125],{"class":83},"'REPORT'",[37,127,128],{"class":58},",\n",[37,130,132,135,138,142,145,148],{"class":39,"line":131},8,[37,133,134],{"class":54},"      input",[37,136,137],{"class":58},": ({ ",[37,139,141],{"class":140},"s4XuR","scheduledAt",[37,143,144],{"class":58}," }) ",[37,146,147],{"class":43},"=>",[37,149,150],{"class":58}," ({ until: scheduledAt }),\n",[37,152,154,157,160],{"class":39,"line":153},9,[37,155,156],{"class":58},"      cron: ",[37,158,159],{"class":83},"'0 9 * * *'",[37,161,128],{"class":58},[37,163,165,168,171],{"class":39,"line":164},10,[37,166,167],{"class":58},"      timeZone: ",[37,169,170],{"class":83},"'Asia\u002FTokyo'",[37,172,128],{"class":58},[37,174,176],{"class":39,"line":175},11,[37,177,178],{"class":58},"    },\n",[37,180,182],{"class":39,"line":181},12,[37,183,184],{"class":58},"  },\n",[37,186,188,191,195],{"class":39,"line":187},13,[37,189,190],{"class":58},"  auth: ",[37,192,194],{"class":193},"sJ8bj","\u002F* ... *\u002F",[37,196,128],{"class":58},[37,198,200],{"class":39,"line":199},14,[37,201,202],{"class":58},"});\n",[15,204,205,206,209,210,212,215,216,219,220,222,223,225,228,229,232,233,228,236,239,240,242,243,246],{},"스케줄 이름은 키로 지정합니다.",[207,208],"br",{},"\n사용할 수 있는 문자는 영문자, 숫자, 하이픈, 언더스코어이며 길이는 64자 이내입니다.",[207,211],{},[18,213,214],{},"binding","을 지정하면 잡을 enqueue하고, ",[18,217,218],{},"flow","를 지정하면 Run을 시작합니다.",[207,221],{},"\n둘 중 하나만 지정하세요.",[207,224],{},[18,226,227],{},"payload","와 ",[18,230,231],{},"input","의 타입은 단독 잡 enqueue나 Run 시작과 마찬가지로 ",[18,234,235],{},"performers",[18,237,238],{},"flows","에서 도출됩니다.",[207,241],{},"\nshard 수가 2 이상인 binding을 대상으로 하는 경우 ",[18,244,245],{},"partitionKey","도 필수입니다.",[15,248,249,228,251,253,254,256,257,259,260,262],{},[18,250,227],{},[18,252,231],{},"에는 값 대신 함수도 지정할 수 있습니다.",[207,255],{},"\n함수를 지정하면 실행할 때마다 호출되며 반환값이 사용됩니다.",[207,258],{},"\n인수 ",[18,261,141],{},"은 해당 회차의 실행 예정 시각입니다.",[28,264,266],{"className":30,"code":265,"language":32,"meta":33,"style":33},"{ binding: 'Sync', payload: ({ scheduledAt }) => ({ since: scheduledAt - 60_000 }), everyMs: 60_000 }\n",[18,267,268],{"__ignoreMap":33},[37,269,270,273,275,278,281,284,286,288,290,292,294,297,300,303,306,309,311,314],{"class":39,"line":40},[37,271,272],{"class":58},"{ ",[37,274,214],{"class":54},[37,276,277],{"class":58},": ",[37,279,280],{"class":83},"'Sync'",[37,282,283],{"class":58},", ",[37,285,227],{"class":54},[37,287,137],{"class":58},[37,289,141],{"class":140},[37,291,144],{"class":58},[37,293,147],{"class":43},[37,295,296],{"class":58}," ({ since: scheduledAt ",[37,298,299],{"class":43},"-",[37,301,302],{"class":47}," 60_000",[37,304,305],{"class":58}," }), ",[37,307,308],{"class":54},"everyMs",[37,310,277],{"class":58},[37,312,313],{"class":47},"60_000",[37,315,316],{"class":58}," }\n",[15,318,319,320,283,323,283,326,283,329,283,332,335,336,338,339,342,343,345,346,283,349,283,352,355],{},"잡을 enqueue하는 스케줄 정의에는 ",[18,321,322],{},"maxAttempts",[18,324,325],{},"backoff",[18,327,328],{},"timeoutMs",[18,330,331],{},"priority",[18,333,334],{},"concurrencyKey"," 등의 옵션을 선택적으로 지정할 수 있습니다.",[207,337],{},"\nRun을 시작하는 스케줄 정의에는 ",[18,340,341],{},"deadlineMs","를 선택적으로 지정할 수 있습니다.",[207,344],{},"\n스케줄 정의에서는 ",[18,347,348],{},"uniqueKey",[18,350,351],{},"delayMs",[18,353,354],{},"runAt","을 사용할 수 없습니다.",[15,357,358,359,362,363,365,366,368,369,371,372,374,375,377],{},"정의에 오류가 있으면 ",[18,360,361],{},"defineTsumugi","를 호출할 때 예외가 발생합니다.",[207,364],{},"\n이름 규칙에 어긋나는 경우, ",[18,367,214],{},"과 ",[18,370,218],{},"를 모두 지정했거나 둘 다 지정하지 않은 경우가 해당합니다.",[207,373],{},"\n대상 binding의 shard 수가 2 이상인데 ",[18,376,245],{},"를 생략한 경우나 사용할 수 없는 옵션을 지정한 경우에도 마찬가지로 예외가 발생합니다.",[23,379,381],{"id":380},"実行間隔","실행 간격",[15,383,384,228,386,389,390,392],{},[18,385,308],{},[18,387,388],{},"cron"," 중 하나만 지정하세요.",[207,391],{},"\n둘 다 지정하거나 둘 다 지정하지 않으면 정의 오류가 발생합니다.",[394,395,308],"h3",{"id":396},"everyms",[15,398,399,401,402,404,405,407,408,410],{},[18,400,308],{},"에는 1000 이상의 정수(밀리초)를 지정하세요.",[207,403],{},"\n1000 미만의 값을 지정하면 정의 오류가 발생합니다.",[207,406],{},"\n첫 번째 실행은 스케줄을 등록하고 1 간격이 지난 뒤에 이루어집니다.",[207,409],{},"\n이후에는 첫 번째 예정 시각에 1 간격씩 더한 시각에 실행됩니다.",[394,412,388],{"id":388},[15,414,415,417,418,420],{},[18,416,388],{},"은 분, 시, 일, 월, 요일의 5개 필드로 지정합니다.",[207,419],{},"\n정밀도는 분 단위이며 초와 연도 필드는 포함하지 않습니다.",[28,422,427],{"className":423,"code":425,"language":426,"meta":33},[424],"language-text","0 3 * * *     매일 3:00\n*\u002F15 * * * *  15분마다\n0 0 1 * *     매월 1일 0:00\n0 9 * * 1-5   월요일부터 금요일 9:00\n","text",[18,428,425],{"__ignoreMap":33},[15,430,431,432,283,435,283,438,283,440,443,444,446,449,450,453,454,456,457,459,460,462,465,466,468,469,471],{},"사용할 수 있는 표기는 숫자, ",[18,433,434],{},"*",[18,436,437],{},",",[18,439,299],{},[18,441,442],{},"\u002F","입니다.",[207,445],{},[18,447,448],{},"JAN","이나 ",[18,451,452],{},"MON"," 같은 이름은 사용할 수 없습니다.",[207,455],{},"\n2월 31일처럼 실행 기회가 없는 식을 지정하면 정의 오류가 발생합니다.",[207,458],{},"\n일과 요일을 모두 지정한 경우에는 둘 중 하나가 일치하면 실행됩니다.",[207,461],{},[18,463,464],{},"*\u002F2","처럼 ",[18,467,434],{},"로 시작하는 일이나 요일은 지정하지 않은 것으로 취급됩니다.",[207,470],{},"\n이 경우 일과 요일이 모두 일치하는 날에 실행됩니다.",[394,473,475],{"id":474},"timezone","timeZone",[15,477,478,480,481,483,484,486,487,490,491,493,496],{},[18,479,475],{},"에 IANA 시간대를 지정하면 ",[18,482,388],{},"을 해석할 때 해당 시간대가 적용됩니다.",[207,485],{},"\n생략하면 ",[18,488,489],{},"UTC","가 사용됩니다.",[207,492],{},[18,494,495],{},"+09:00"," 같은 고정 오프셋을 지정하면 정의 오류가 발생합니다.",[28,498,500],{"className":30,"code":499,"language":32,"meta":33,"style":33},"{ binding: 'OpenShop', payload: {}, cron: '0 9 * * 1-5', timeZone: 'Asia\u002FTokyo' }\n",[18,501,502],{"__ignoreMap":33},[37,503,504,506,508,510,513,515,517,520,522,524,527,529,531,533,535],{"class":39,"line":40},[37,505,272],{"class":58},[37,507,214],{"class":54},[37,509,277],{"class":58},[37,511,512],{"class":83},"'OpenShop'",[37,514,283],{"class":58},[37,516,227],{"class":54},[37,518,519],{"class":58},": {}, ",[37,521,388],{"class":54},[37,523,277],{"class":58},[37,525,526],{"class":83},"'0 9 * * 1-5'",[37,528,283],{"class":58},[37,530,475],{"class":54},[37,532,277],{"class":58},[37,534,170],{"class":83},[37,536,316],{"class":58},[15,538,539,541,542,544,545,547,549,550,552,554],{},[18,540,475],{},"은 ",[18,543,388],{},"과 함께 사용하세요.",[207,546],{},[18,548,308],{},"와 동시에 지정하면 정의 오류가 발생합니다.",[207,551],{},[18,553,308],{},"는 시각의 차이로 계산되므로 시간대의 영향을 받지 않습니다.",[15,556,557,558,560],{},"서머타임 전환으로 존재하지 않게 된 현지 시각의 회차는 실행되지 않습니다.",[207,559],{},"\n같은 현지 시각이 두 번 있는 경우에는 첫 번째에 한해 실행됩니다.",[23,562,564],{"id":563},"前回の実行が終了していない場合","이전 실행이 끝나지 않은 경우",[15,566,567,570,571,573,574,577,578,581,582,443,584,586],{},[18,568,569],{},"overlap","은 이전 실행이 완료되기 전에 다음 예정 시각이 된 경우의 동작을 지정합니다.",[207,572],{},"\n값은 ",[18,575,576],{},"'skip'"," 또는 ",[18,579,580],{},"'overlap'"," 중 하나이며 기본값은 ",[18,583,576],{},[207,585],{},"\n이 외의 값을 설정하면 정의 오류가 발생합니다.",[588,589,590,603],"table",{},[591,592,593],"thead",{},[594,595,596,600],"tr",{},[597,598,599],"th",{},"값",[597,601,602],{},"동작",[604,605,606,616],"tbody",{},[594,607,608,613],{},[609,610,611],"td",{},[18,612,576],{},[609,614,615],{},"해당 회차의 실행을 생략. 기본값",[594,617,618,622],{},[609,619,620],{},[18,621,580],{},[609,623,624],{},"이전 실행의 상태와 관계없이 실행",[15,626,627,628,283,631,283,634,637,638,640,641,643,644,646],{},"이전 잡이 ",[18,629,630],{},"SCHEDULED",[18,632,633],{},"QUEUED",[18,635,636],{},"RUNNING"," 중 하나의 상태이면 해당 실행은 끝나지 않은 것으로 간주됩니다.",[207,639],{},"\nRun의 경우에는 이전 Run이 ",[18,642,636],{},"이면 끝나지 않은 것입니다.",[207,645],{},"\n실행되지 않은 횟수는 대시보드 목록에 표시됩니다.",[28,648,650],{"className":30,"code":649,"language":32,"meta":33,"style":33},"{ binding: 'Crawl', payload: {}, everyMs: 60_000, overlap: 'overlap' }\n",[18,651,652],{"__ignoreMap":33},[37,653,654,656,658,660,663,665,667,669,671,673,675,677,679,681,683],{"class":39,"line":40},[37,655,272],{"class":58},[37,657,214],{"class":54},[37,659,277],{"class":58},[37,661,662],{"class":83},"'Crawl'",[37,664,283],{"class":58},[37,666,227],{"class":54},[37,668,519],{"class":58},[37,670,308],{"class":54},[37,672,277],{"class":58},[37,674,313],{"class":47},[37,676,283],{"class":58},[37,678,569],{"class":54},[37,680,277],{"class":58},[37,682,580],{"class":83},[37,684,316],{"class":58},[23,686,688],{"id":687},"実行の遅れ","실행 지연",[15,690,691,692,694,695,697,698,700],{},"부하나 배포의 영향으로 실행이 예정 시각보다 늦어질 수 있습니다.",[207,693],{},"\n지연이 여러 간격에 걸치면 가장 오래된 예정 회차가 1회 실행되고 나머지 회차는 실행되지 않습니다.",[207,696],{},"\n다음 예정 시각은 현재 시각 이후의 첫 번째 예정 시각입니다.",[207,699],{},"\n지연이 발생한 뒤에도 예정 시각은 첫 번째 예정 시각에 간격을 더한 시각 그대로입니다.",[23,702,704],{"id":703},"重複実行の防止","중복 실행 방지",[15,706,707,708,710],{},"같은 예정 시각의 회차가 중복해서 실행되는 일은 없습니다.",[207,709],{},"\n두 번째 실행에서는 새 잡이나 Run이 생성되지 않고 기존 잡 또는 Run의 ID가 재사용됩니다.",[15,712,713,714,716,717,719],{},"스케줄 정의에서 ",[18,715,348],{},"를 사용할 수 없는 것은 이 구조 때문입니다.",[207,718],{},"\n지정하면 중복을 판정하는 기간 내의 모든 회차가 첫 번째 건과 같은 잡으로 취급됩니다.",[23,721,723],{"id":722},"失敗","실패",[15,725,726,577,728,730,731,733,734,736,737,739],{},[18,727,227],{},[18,729,231],{}," 함수에서 예외가 발생한 회차는 실행되지 않습니다.",[207,732],{},"\n잡 enqueue나 Run 시작에 실패한 회차도 마찬가지로 실행되지 않습니다.",[207,735],{},"\n실패 이유는 기록되며 해당 회차는 재시도되지 않습니다.",[207,738],{},"\n다른 스케줄의 실행에는 영향을 주지 않습니다.",[23,741,743],{"id":742},"一覧","목록",[15,745,746,747,749,750,752,753,756,757,759],{},"대시보드의 ",[18,748,20],{}," 탭에 정의한 스케줄 목록이 표시됩니다.",[207,751],{},"\n같은 목록은 ",[18,754,755],{},"GET \u002Fapi\u002Fschedules","로 가져올 수 있습니다.",[207,758],{},"\n다음 예정 시각, 이전 실행, 실행되지 않은 횟수, 실패 이유, 일시 정지 상태가 포함됩니다.",[15,761,762],{},[763,764],"img",{"alt":765,"src":766},"스케줄 목록","\u002Fdashboard-schedules.jpg",[15,768,769],{},"시각은 스케줄에 설정된 IANA 시간대 및 해당 시점의 GMT 오프셋과 함께 표시됩니다.",[23,771,773],{"id":772},"一時停止と再開","일시 정지와 재개",[15,775,746,776,778,779,228,782,785,786,788,789,791,792,794,795,797],{},[18,777,20],{}," 탭, 또는 ",[18,780,781],{},"POST \u002Fapi\u002Fschedules\u002F:name\u002Fpause",[18,783,784],{},"POST \u002Fapi\u002Fschedules\u002F:name\u002Fresume","으로 스케줄별 정기 실행의 일시 정지와 재개를 제어합니다.",[207,787],{},"\n일시 정지 중에는 해당 스케줄의 실행이 억제됩니다.",[207,790],{},"\n정지 중에 예정 시각이 지나간 회차는 재개 후에 실행되지 않습니다.",[207,793],{},"\n재개 후 첫 번째 실행은 재개 시점 이후에 오는 첫 번째 예정 시각입니다.",[207,796],{},"\n정지 전에 enqueue된 잡의 실행에는 영향이 없습니다.",[15,799,800,801,804,805,807,808,810],{},"스케줄의 일시 정지는 binding의 ",[18,802,803],{},"paused","와는 별개의 설정입니다.",[207,806],{},"\nbinding을 일시 정지하면 해당 binding으로 enqueue되는 모든 잡의 실행이 정지됩니다.",[207,809],{},"\n스케줄의 일시 정지가 멈추는 것은 해당 스케줄의 실행입니다.",[23,812,814],{"id":813},"手動実行","수동 실행",[15,816,746,817,819,820,823,824,826,827,829,831,832,834,228,836,838,839,841],{},[18,818,20],{}," 탭에 있는 \"지금 실행\"과 ",[18,821,822],{},"POST \u002Fapi\u002Fschedules\u002F:name\u002Ftrigger","로 스케줄을 원하는 시점에 1회 실행합니다.",[207,825],{},"\n일시 정지 중인 스케줄도 대상입니다.",[207,828],{},[18,830,569],{},"은 판정하지 않으며 다음 정기 실행 시각도 바뀌지 않습니다.",[207,833],{},[18,835,227],{},[18,837,231],{}," 함수가 받는 ",[18,840,141],{},"은 수동 실행한 시각입니다.",[23,843,845],{"id":844},"開始条件","시작 조건",[15,847,848,849,851,852,854,855,857],{},"정기 실행은 배포 후 Worker가 HTTP 요청, 큐 메시지, cron 트리거 중 하나를 처음 수신한 시점에 시작합니다.",[207,850],{},"\n그 후에는 외부에서 호출하지 않아도 실행됩니다.",[207,853],{},"\n외부 접근이 없는 구성에서는 목록 보관 기간을 위해 설정한 cron 트리거가 그 역할을 합니다.",[207,856],{},"\n정의를 변경하고 배포한 경우 변경 사항은 다음 회차부터 반영됩니다.",[23,859,861],{"id":860},"設定","설정",[15,863,864,866,867,869],{},[18,865,20],{},"를 지정하는 경우 wrangler 설정에 다음 2곳을 추가하세요.",[207,868],{},"\n지정하지 않는 경우에는 이 설정이 필요 없습니다.",[28,871,875],{"className":872,"code":873,"language":874,"meta":33,"style":33},"language-jsonc shiki shiki-themes github-light github-dark","{\n  \"durable_objects\": {\n    \"bindings\": [\n      { \"name\": \"JOB_SHARD\", \"class_name\": \"TsumugiJobShard\" },\n      { \"name\": \"SCHEDULER\", \"class_name\": \"TsumugiScheduler\" },\n    ],\n  },\n  \"migrations\": [\n    { \"tag\": \"v1\", \"new_sqlite_classes\": [\"TsumugiJobShard\"] },\n    { \"tag\": \"v3\", \"new_sqlite_classes\": [\"TsumugiScheduler\"] },\n  ],\n}\n","jsonc",[18,876,877,882,890,898,923,945,950,954,961,987,1008,1013],{"__ignoreMap":33},[37,878,879],{"class":39,"line":40},[37,880,881],{"class":58},"{\n",[37,883,884,887],{"class":39,"line":62},[37,885,886],{"class":47},"  \"durable_objects\"",[37,888,889],{"class":58},": {\n",[37,891,892,895],{"class":39,"line":68},[37,893,894],{"class":47},"    \"bindings\"",[37,896,897],{"class":58},": [\n",[37,899,900,903,906,908,911,913,916,918,921],{"class":39,"line":74},[37,901,902],{"class":58},"      { ",[37,904,905],{"class":47},"\"name\"",[37,907,277],{"class":58},[37,909,910],{"class":83},"\"JOB_SHARD\"",[37,912,283],{"class":58},[37,914,915],{"class":47},"\"class_name\"",[37,917,277],{"class":58},[37,919,920],{"class":83},"\"TsumugiJobShard\"",[37,922,110],{"class":58},[37,924,925,927,929,931,934,936,938,940,943],{"class":39,"line":80},[37,926,902],{"class":58},[37,928,905],{"class":47},[37,930,277],{"class":58},[37,932,933],{"class":83},"\"SCHEDULER\"",[37,935,283],{"class":58},[37,937,915],{"class":47},[37,939,277],{"class":58},[37,941,942],{"class":83},"\"TsumugiScheduler\"",[37,944,110],{"class":58},[37,946,947],{"class":39,"line":113},[37,948,949],{"class":58},"    ],\n",[37,951,952],{"class":39,"line":119},[37,953,184],{"class":58},[37,955,956,959],{"class":39,"line":131},[37,957,958],{"class":47},"  \"migrations\"",[37,960,897],{"class":58},[37,962,963,966,969,971,974,976,979,982,984],{"class":39,"line":153},[37,964,965],{"class":58},"    { ",[37,967,968],{"class":47},"\"tag\"",[37,970,277],{"class":58},[37,972,973],{"class":83},"\"v1\"",[37,975,283],{"class":58},[37,977,978],{"class":47},"\"new_sqlite_classes\"",[37,980,981],{"class":58},": [",[37,983,920],{"class":83},[37,985,986],{"class":58},"] },\n",[37,988,989,991,993,995,998,1000,1002,1004,1006],{"class":39,"line":164},[37,990,965],{"class":58},[37,992,968],{"class":47},[37,994,277],{"class":58},[37,996,997],{"class":83},"\"v3\"",[37,999,283],{"class":58},[37,1001,978],{"class":47},[37,1003,981],{"class":58},[37,1005,942],{"class":83},[37,1007,986],{"class":58},[37,1009,1010],{"class":39,"line":175},[37,1011,1012],{"class":58},"  ],\n",[37,1014,1015],{"class":39,"line":181},[37,1016,1017],{"class":58},"}\n",[15,1019,1020,1023,1024,1026,1027,1030,1031,1033],{},[18,1021,1022],{},"TsumugiScheduler","는 ",[18,1025,361],{},"의 반환값인 ",[18,1028,1029],{},"schedulerClass","를 상속하여 export하세요.",[207,1032],{},"\n클래스 이름은 wrangler 설정과 일치시켜야 합니다.",[28,1035,1037],{"className":30,"code":1036,"language":32,"meta":33,"style":33},"export { TsumugiJobShard } from 'tsumugi';\nexport class TsumugiScheduler extends tsumugi.schedulerClass {}\n",[18,1038,1039,1056],{"__ignoreMap":33},[37,1040,1041,1044,1047,1050,1053],{"class":39,"line":40},[37,1042,1043],{"class":43},"export",[37,1045,1046],{"class":58}," { TsumugiJobShard } ",[37,1048,1049],{"class":43},"from",[37,1051,1052],{"class":83}," 'tsumugi'",[37,1054,1055],{"class":58},";\n",[37,1057,1058,1060,1063,1066,1069,1071,1074,1076],{"class":39,"line":62},[37,1059,1043],{"class":43},[37,1061,1062],{"class":43}," class",[37,1064,1065],{"class":54}," TsumugiScheduler",[37,1067,1068],{"class":43}," extends",[37,1070,48],{"class":54},[37,1072,1073],{"class":58},".",[37,1075,1029],{"class":54},[37,1077,1078],{"class":58}," {}\n",[1080,1081,1082],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":33,"searchDepth":68,"depth":68,"links":1084},[1085,1086,1091,1092,1093,1094,1095,1096,1097,1098,1099],{"id":25,"depth":62,"text":26},{"id":380,"depth":62,"text":381,"children":1087},[1088,1089,1090],{"id":396,"depth":68,"text":308},{"id":388,"depth":68,"text":388},{"id":474,"depth":68,"text":475},{"id":563,"depth":62,"text":564},{"id":687,"depth":62,"text":688},{"id":703,"depth":62,"text":704},{"id":722,"depth":62,"text":723},{"id":742,"depth":62,"text":743},{"id":772,"depth":62,"text":773},{"id":813,"depth":62,"text":814},{"id":844,"depth":62,"text":845},{"id":860,"depth":62,"text":861},"잡과 Flow를 일정 간격 또는 cron 식으로 지정한 시각에 실행하는 방법과, 일시 정지, 재개, 수동 실행 조작에 대해","md",{},true,"\u002Fko\u002Fguide\u002Fschedule","2026-07-22",{"title":6,"description":1100},"ko\u002Fguide\u002Fschedule","2026-10-25","84ijSbFghW-xM7d5WC-oLNdqFwd8whvj-_Dg5nOk2MM",false,1794027574034]