[{"data":1,"prerenderedAt":2038},["ShallowReactive",2],{"docs:\u002Fko\u002Freference\u002Fconfig":3},{"page":4,"untranslated":2037,"translated":2030},{"id":5,"title":6,"body":7,"description":2027,"extension":2028,"meta":2029,"navigation":2030,"path":2031,"publishedAt":2032,"seo":2033,"stem":2034,"updatedAt":2035,"__hash__":2036},"docs_ko\u002Fko\u002Freference\u002Fconfig.md","설정",{"type":8,"value":9,"toc":2008},"minimark",[10,14,19,131,149,334,339,459,498,500,543,587,589,720,749,752,787,809,812,859,907,910,976,991,995,1068,1072,1148,1151,1294,1298,1517,1523,1543,1547,1608,1612,1653,1659,1688,1692,1801,1812,1824,1880,1886,1890,1984,2004],[11,12,6],"h1",{"id":13},"設定",[15,16,18],"h2",{"id":17},"definetsumugi","defineTsumugi",[20,21,26],"pre",{"className":22,"code":23,"language":24,"meta":25,"style":25},"language-ts shiki shiki-themes github-light github-dark","const tsumugi = defineTsumugi({\n  performers,\n  flows,\n  schedules,\n  runs,\n  bindings,\n  auth,\n  ui,\n  retention,\n  metrics,\n  onFailure,\n  onSettled,\n  onEnqueue,\n});\n","ts","",[27,28,29,53,59,65,71,77,83,89,95,101,107,113,119,125],"code",{"__ignoreMap":25},[30,31,34,38,42,45,49],"span",{"class":32,"line":33},"line",1,[30,35,37],{"class":36},"szBVR","const",[30,39,41],{"class":40},"sj4cs"," tsumugi",[30,43,44],{"class":36}," =",[30,46,48],{"class":47},"sScJk"," defineTsumugi",[30,50,52],{"class":51},"sVt8B","({\n",[30,54,56],{"class":32,"line":55},2,[30,57,58],{"class":51},"  performers,\n",[30,60,62],{"class":32,"line":61},3,[30,63,64],{"class":51},"  flows,\n",[30,66,68],{"class":32,"line":67},4,[30,69,70],{"class":51},"  schedules,\n",[30,72,74],{"class":32,"line":73},5,[30,75,76],{"class":51},"  runs,\n",[30,78,80],{"class":32,"line":79},6,[30,81,82],{"class":51},"  bindings,\n",[30,84,86],{"class":32,"line":85},7,[30,87,88],{"class":51},"  auth,\n",[30,90,92],{"class":32,"line":91},8,[30,93,94],{"class":51},"  ui,\n",[30,96,98],{"class":32,"line":97},9,[30,99,100],{"class":51},"  retention,\n",[30,102,104],{"class":32,"line":103},10,[30,105,106],{"class":51},"  metrics,\n",[30,108,110],{"class":32,"line":109},11,[30,111,112],{"class":51},"  onFailure,\n",[30,114,116],{"class":32,"line":115},12,[30,117,118],{"class":51},"  onSettled,\n",[30,120,122],{"class":32,"line":121},13,[30,123,124],{"class":51},"  onEnqueue,\n",[30,126,128],{"class":32,"line":127},14,[30,129,130],{"class":51},"});\n",[132,133,134,136,137,140,141,144,145,148],"p",{},[27,135,18],{},"에는 타입 인자를 지정할 필요가 없습니다.",[138,139],"br",{},"\nbinding별 payload 타입과 ",[27,142,143],{},"Env","는 ",[27,146,147],{},"performers","의 내용에서 자동으로 추론됩니다.",[150,151,152,168],"table",{},[153,154,155],"thead",{},[156,157,158,162,165],"tr",{},[159,160,161],"th",{},"이름",[159,163,164],{},"필수",[159,166,167],{},"내용",[169,170,171,184,200,215,227,239,251,270,282,298,310,322],"tbody",{},[156,172,173,178,181],{},[174,175,176],"td",{},[27,177,147],{},[174,179,180],{},"○",[174,182,183],{},"performer 모듈. payload와 필수 키 타입의 도출 원본",[156,185,186,191,193],{},[174,187,188],{},[27,189,190],{},"flows",[174,192],{},[174,194,195,196,199],{},"Flow 이름과 정의의 대응. 지정하는 경우 ",[27,197,198],{},"RUN"," binding이 필요",[156,201,202,207,209],{},[174,203,204],{},[27,205,206],{},"schedules",[174,208],{},[174,210,211,212,199],{},"정기 실행 정의. 지정하는 경우 ",[27,213,214],{},"SCHEDULER",[156,216,217,222,224],{},[174,218,219],{},[27,220,221],{},"runs",[174,223],{},[174,225,226],{},"Run의 상한과 보존 기간",[156,228,229,234,236],{},[174,230,231],{},[27,232,233],{},"bindings",[174,235],{},[174,237,238],{},"binding별 shard 수, 실행량 제한, 보존 기간",[156,240,241,246,248],{},[174,242,243],{},[27,244,245],{},"auth",[174,247],{},[174,249,250],{},"인증. 미설정 시 REST API와 대시보드에 대한 모든 요청이 404",[156,252,253,258,260],{},[174,254,255],{},[27,256,257],{},"ui",[174,259],{},[174,261,262,265,266,269],{},[27,263,264],{},"tsumugi\u002Fui","의 ",[27,267,268],{},"ui()",". 미지정 시 대시보드 번들 없음",[156,271,272,277,279],{},[174,273,274],{},[27,275,276],{},"retention",[174,278],{},[174,280,281],{},"목록의 보존 기간",[156,283,284,289,291],{},[174,285,286],{},[27,287,288],{},"metrics",[174,290],{},[174,292,293,294,297],{},"메트릭 읽기 설정. 미설정 시 ",[27,295,296],{},"GET \u002Fapi\u002Fmetrics","가 501",[156,299,300,305,307],{},[174,301,302],{},[27,303,304],{},"onFailure",[174,306],{},[174,308,309],{},"실패한 잡을 알리는 binding 이름. 미설정 시 알림 없음",[156,311,312,317,319],{},[174,313,314],{},[27,315,316],{},"onSettled",[174,318],{},[174,320,321],{},"종료된 잡을 알리는 binding 이름과 알릴 상태",[156,323,324,329,331],{},[174,325,326],{},[27,327,328],{},"onEnqueue",[174,330],{},[174,332,333],{},"enqueue할 때마다 실행 옵션의 기본값을 설정하는 함수",[335,336,338],"h3",{"id":337},"戻り値","반환값",[150,340,341,349],{},[153,342,343],{},[156,344,345,347],{},[159,346,161],{},[159,348,167],{},[169,350,351,372,386,396,409,419,429,439,449],{},[156,352,353,365],{},[174,354,355,358,359,358,362],{},[27,356,357],{},"fetch",", ",[27,360,361],{},"queue",[27,363,364],{},"scheduled",[174,366,367,368,371],{},"default export에 포함하는 ",[27,369,370],{},"ExportedHandler","의 핸들러",[156,373,374,379],{},[174,375,376],{},[27,377,378],{},"jobs(env)",[174,380,381,382,385],{},"타입이 지정된 enqueue 객체(",[27,383,384],{},"JobQueue\u003CM>",")",[156,387,388,393],{},[174,389,390],{},[27,391,392],{},"enqueue(env, input)",[174,394,395],{},"잡 1건의 타입이 지정된 enqueue. 반환값은 잡 ID",[156,397,398,403],{},[174,399,400],{},[27,401,402],{},"enqueueMany(env, inputs)",[174,404,405,408],{},[27,406,407],{},"enqueue","와 같은 형식으로 여러 잡을 enqueue",[156,410,411,416],{},[174,412,413],{},[27,414,415],{},"shardFor(env, binding, partitionKey?)",[174,417,418],{},"enqueue 대상 shard의 stub",[156,420,421,426],{},[174,422,423],{},[27,424,425],{},"start(env, flow, input, options?)",[174,427,428],{},"Run 시작. 반환값은 runId",[156,430,431,436],{},[174,432,433],{},[27,434,435],{},"runFor(env, runId)",[174,437,438],{},"Run의 stub",[156,440,441,446],{},[174,442,443],{},[27,444,445],{},"runClass",[174,447,448],{},"wrangler에 등록하는 Run의 클래스",[156,450,451,456],{},[174,452,453],{},[27,454,455],{},"schedulerClass",[174,457,458],{},"wrangler에 등록하는 정기 실행의 클래스",[132,460,461,463,464,358,467,358,470,472,473,475,477,478,480,481,483,485,486,488,489,491,492,497],{},[27,462,190],{},"를 지정하지 않은 경우에도 반환값에는 ",[27,465,466],{},"start",[27,468,469],{},"runFor",[27,471,445],{},"가 포함됩니다.",[138,474],{},[27,476,190],{},"에 정의되지 않은 Flow 이름을 ",[27,479,466],{},"에 전달하면 예외가 발생합니다.",[138,482],{},[27,484,198],{}," binding이 없는 상태에서 ",[27,487,469],{},"를 호출한 경우에도 마찬가지로 예외가 발생합니다.",[138,490],{},"\nenqueue 방법별 차이는 ",[493,494,496],"a",{"href":495},"\u002Fko\u002Fguide\u002Fenqueue#%E6%8A%95%E5%85%A5%E6%96%B9%E6%B3%95","잡 투입","을 참조하세요.",[15,499,245],{"id":245},[150,501,502,511],{},[153,503,504],{},[156,505,506,509],{},[159,507,508],{},"함수",[159,510,167],{},[169,512,513,523,533],{},[156,514,515,520],{},[174,516,517],{},[27,518,519],{},"bearerAuth",[174,521,522],{},"토큰 1개를 사용한 인증",[156,524,525,530],{},[174,526,527],{},[27,528,529],{},"cloudflareAccess",[174,531,532],{},"Cloudflare Access의 JWT 검증",[156,534,535,540],{},[174,536,537],{},[27,538,539],{},"unsafeNoAuth",[174,541,542],{},"인증 없음",[132,544,545,547,548,550,551,554,555,558,559,562,563,566,567,569,570,497,574,576,578,579,581,583,584,497],{},[27,546,245],{},"에는 직접 작성한 인증 함수를 지정할 수 있습니다.",[138,549],{},"\n함수의 인자는 ",[27,552,553],{},"request","와 ",[27,556,557],{},"env","이고, 반환값은 ",[27,560,561],{},"Response"," 또는 ",[27,564,565],{},"undefined","입니다.",[138,568],{},"\n자세한 내용은 ",[493,571,573],{"href":572},"\u002Fko\u002Fguide\u002Fdashboard#%E7%8B%AC%E8%87%AA%E3%81%AE%E8%AA%8D%E8%A8%BC","대시보드와 인증",[138,575],{},[27,577,245],{},"를 설정하지 않으면 REST API와 대시보드에 대한 모든 요청에 404로 응답합니다.",[138,580],{},[27,582,539],{},"의 영향은 ",[493,585,573],{"href":586},"\u002Fko\u002Fguide\u002Fdashboard#%E8%AA%8D%E8%A8%BC%E3%81%97%E3%81%AA%E3%81%84%E6%A7%8B%E6%88%90",[15,588,288],{"id":288},[20,590,592],{"className":22,"code":591,"language":24,"meta":25,"style":25},"const tsumugi = defineTsumugi({\n  performers,\n  auth: bearerAuth((env: Env) => env.TSUMUGI_TOKEN),\n  metrics: (env: Env) =>\n    env.CF_ACCOUNT_ID && env.CF_API_TOKEN\n      ? { accountId: env.CF_ACCOUNT_ID, apiToken: env.CF_API_TOKEN, dataset: 'tsumugi_jobs' }\n      : undefined,\n});\n",[27,593,594,606,610,644,663,679,705,716],{"__ignoreMap":25},[30,595,596,598,600,602,604],{"class":32,"line":33},[30,597,37],{"class":36},[30,599,41],{"class":40},[30,601,44],{"class":36},[30,603,48],{"class":47},[30,605,52],{"class":51},[30,607,608],{"class":32,"line":55},[30,609,58],{"class":51},[30,611,612,615,617,620,623,626,629,632,635,638,641],{"class":32,"line":61},[30,613,614],{"class":51},"  auth: ",[30,616,519],{"class":47},[30,618,619],{"class":51},"((",[30,621,557],{"class":622},"s4XuR",[30,624,625],{"class":36},":",[30,627,628],{"class":47}," Env",[30,630,631],{"class":51},") ",[30,633,634],{"class":36},"=>",[30,636,637],{"class":51}," env.",[30,639,640],{"class":40},"TSUMUGI_TOKEN",[30,642,643],{"class":51},"),\n",[30,645,646,649,652,654,656,658,660],{"class":32,"line":67},[30,647,648],{"class":47},"  metrics",[30,650,651],{"class":51},": (",[30,653,557],{"class":622},[30,655,625],{"class":36},[30,657,628],{"class":47},[30,659,631],{"class":51},[30,661,662],{"class":36},"=>\n",[30,664,665,668,671,674,676],{"class":32,"line":73},[30,666,667],{"class":51},"    env.",[30,669,670],{"class":40},"CF_ACCOUNT_ID",[30,672,673],{"class":36}," &&",[30,675,637],{"class":51},[30,677,678],{"class":40},"CF_API_TOKEN\n",[30,680,681,684,687,689,692,695,698,702],{"class":32,"line":79},[30,682,683],{"class":36},"      ?",[30,685,686],{"class":51}," { accountId: env.",[30,688,670],{"class":40},[30,690,691],{"class":51},", apiToken: env.",[30,693,694],{"class":40},"CF_API_TOKEN",[30,696,697],{"class":51},", dataset: ",[30,699,701],{"class":700},"sZZnC","'tsumugi_jobs'",[30,703,704],{"class":51}," }\n",[30,706,707,710,713],{"class":32,"line":85},[30,708,709],{"class":36},"      :",[30,711,712],{"class":40}," undefined",[30,714,715],{"class":51},",\n",[30,717,718],{"class":32,"line":91},[30,719,130],{"class":51},[132,721,722,724,725,727,730,731,733,736,737,740,741,743,745,746,748],{},[27,723,288],{},"는 기록한 메트릭을 대시보드와 REST API에서 조회하기 위한 설정입니다.",[138,726],{},[27,728,729],{},"apiToken","은 Account Analytics 읽기 권한을 가진 API 토큰이며, Secret으로 설정하세요.",[138,732],{},[27,734,735],{},"dataset","은 wrangler 설정 파일의 ",[27,738,739],{},"analytics_engine_datasets","에 기술한 데이터셋 이름입니다.",[138,742],{},[27,744,288],{},"를 지정하지 않으면 ",[27,747,296],{},"는 501로 응답하고, 대시보드 사이드바에 메트릭 항목이 표시되지 않습니다.",[15,750,304],{"id":751},"onfailure",[20,753,755],{"className":22,"code":754,"language":24,"meta":25,"style":25},"const tsumugi = defineTsumugi({\n  performers,\n  onFailure: 'NotifyFailure',\n});\n",[27,756,757,769,773,783],{"__ignoreMap":25},[30,758,759,761,763,765,767],{"class":32,"line":33},[30,760,37],{"class":36},[30,762,41],{"class":40},[30,764,44],{"class":36},[30,766,48],{"class":47},[30,768,52],{"class":51},[30,770,771],{"class":32,"line":55},[30,772,58],{"class":51},[30,774,775,778,781],{"class":32,"line":61},[30,776,777],{"class":51},"  onFailure: ",[30,779,780],{"class":700},"'NotifyFailure'",[30,782,715],{"class":51},[30,784,785],{"class":32,"line":67},[30,786,130],{"class":51},[132,788,789,791,792,794,795,798,799,801,802,804,805,497],{},[27,790,304],{},"는 실패한 잡을 알리는 performer의 binding 이름입니다.",[138,793],{},"\n알림을 받는 performer는 ",[27,796,797],{},"FailureNotice","를 수신하는 것으로 한정됩니다.",[138,800],{},"\n알림 조건과 ",[27,803,797],{},"의 내용은 ",[493,806,808],{"href":807},"\u002Fko\u002Fguide\u002Fexecution#%E5%A4%B1%E6%95%97%E3%81%AE%E9%80%9A%E7%9F%A5","실패 알림",[15,810,316],{"id":811},"onsettled",[20,813,815],{"className":22,"code":814,"language":24,"meta":25,"style":25},"const tsumugi = defineTsumugi({\n  performers,\n  onSettled: { binding: 'NotifySettled', states: ['COMPLETED', 'FAILED'] },\n});\n",[27,816,817,829,833,855],{"__ignoreMap":25},[30,818,819,821,823,825,827],{"class":32,"line":33},[30,820,37],{"class":36},[30,822,41],{"class":40},[30,824,44],{"class":36},[30,826,48],{"class":47},[30,828,52],{"class":51},[30,830,831],{"class":32,"line":55},[30,832,58],{"class":51},[30,834,835,838,841,844,847,849,852],{"class":32,"line":61},[30,836,837],{"class":51},"  onSettled: { binding: ",[30,839,840],{"class":700},"'NotifySettled'",[30,842,843],{"class":51},", states: [",[30,845,846],{"class":700},"'COMPLETED'",[30,848,358],{"class":51},[30,850,851],{"class":700},"'FAILED'",[30,853,854],{"class":51},"] },\n",[30,856,857],{"class":32,"line":67},[30,858,130],{"class":51},[132,860,861,863,864,866,869,870,873,874,876,879,880,358,883,358,886,358,889,892,893,895,896,898,899,801,901,804,903,497],{},[27,862,316],{},"는 종료된 잡을 알리는 performer의 binding 이름과 알릴 상태입니다.",[138,865],{},[27,867,868],{},"binding","은 ",[27,871,872],{},"SettledNotice","를 수신하는 performer로 한정됩니다.",[138,875],{},[27,877,878],{},"states","는 필수이며 ",[27,881,882],{},"COMPLETED",[27,884,885],{},"FAILED",[27,887,888],{},"CANCELLED",[27,890,891],{},"STALLED"," 중에서 선택합니다.",[138,894],{},"\n빈 배열이나 잘못된 상태를 지정하면 ",[27,897,18],{},"에서 예외가 발생합니다.",[138,900],{},[27,902,872],{},[493,904,906],{"href":905},"\u002Fko\u002Fguide\u002Fexecution#%E7%B5%82%E4%BA%86%E3%81%AE%E9%80%9A%E7%9F%A5","종료 알림",[15,908,328],{"id":909},"onenqueue",[20,911,913],{"className":22,"code":912,"language":24,"meta":25,"style":25},"const tsumugi = defineTsumugi({\n  performers,\n  onEnqueue: (input) => (input.binding === 'SlowJob' ? { timeoutMs: 300_000 } : undefined),\n});\n",[27,914,915,927,931,972],{"__ignoreMap":25},[30,916,917,919,921,923,925],{"class":32,"line":33},[30,918,37],{"class":36},[30,920,41],{"class":40},[30,922,44],{"class":36},[30,924,48],{"class":47},[30,926,52],{"class":51},[30,928,929],{"class":32,"line":55},[30,930,58],{"class":51},[30,932,933,936,938,941,943,945,948,951,954,957,960,963,966,968,970],{"class":32,"line":61},[30,934,935],{"class":47},"  onEnqueue",[30,937,651],{"class":51},[30,939,940],{"class":622},"input",[30,942,631],{"class":51},[30,944,634],{"class":36},[30,946,947],{"class":51}," (input.binding ",[30,949,950],{"class":36},"===",[30,952,953],{"class":700}," 'SlowJob'",[30,955,956],{"class":36}," ?",[30,958,959],{"class":51}," { timeoutMs: ",[30,961,962],{"class":40},"300_000",[30,964,965],{"class":51}," } ",[30,967,625],{"class":36},[30,969,712],{"class":40},[30,971,643],{"class":51},[30,973,974],{"class":32,"line":67},[30,975,130],{"class":51},[132,977,978,980,981,983,984,986,987,497],{},[27,979,328],{},"는 잡을 enqueue할 때마다 실행 옵션의 기본값을 설정하는 함수입니다.",[138,982],{},"\n사용자가 명시한 값이 항상 우선합니다.",[138,985],{},"\n대상이 되는 enqueue 방법과 기본값이 적용되는 옵션의 자세한 내용은 ",[493,988,990],{"href":989},"\u002Fko\u002Fguide\u002Fexecution#%E6%8A%95%E5%85%A5%E6%99%82%E3%81%AE%E6%97%A2%E5%AE%9A%E5%80%A4","enqueue 시의 기본값",[15,992,994],{"id":993},"runsettings","RunSettings",[150,996,997,1008],{},[153,998,999],{},[156,1000,1001,1003,1006],{},[159,1002,161],{},[159,1004,1005],{},"기본값",[159,1007,167],{},[169,1009,1010,1025,1040,1053],{},[156,1011,1012,1017,1022],{},[174,1013,1014],{},[27,1015,1016],{},"maxNodes",[174,1018,1019],{},[27,1020,1021],{},"10000",[174,1023,1024],{},"하나의 Run에 포함할 수 있는 node 수의 상한. 초과 시 Run이 실패",[156,1026,1027,1032,1037],{},[174,1028,1029],{},[27,1030,1031],{},"maxDepth",[174,1033,1034],{},[27,1035,1036],{},"3",[174,1038,1039],{},"subflow 중첩의 상한. 초과 시 Run이 실패",[156,1041,1042,1047,1050],{},[174,1043,1044],{},[27,1045,1046],{},"sweepAfterMs",[174,1048,1049],{},"5분",[174,1051,1052],{},"종료된 Run의 보존 시간",[156,1054,1055,1060,1063],{},[174,1056,1057],{},[27,1058,1059],{},"failedRetentionMs",[174,1061,1062],{},"7일",[174,1064,1065,1067],{},[27,1066,885],{}," 상태 Run의 보존 시간. 이 기간 내의 Run은 재개 대상",[15,1069,1071],{"id":1070},"bindingconfig","BindingConfig",[150,1073,1074,1084],{},[153,1075,1076],{},[156,1077,1078,1080,1082],{},[159,1079,161],{},[159,1081,1005],{},[159,1083,167],{},[169,1085,1086,1105,1118,1133],{},[156,1087,1088,1093,1098],{},[174,1089,1090],{},[27,1091,1092],{},"shards",[174,1094,1095],{},[27,1096,1097],{},"1",[174,1099,1100,1101,1104],{},"shard 수. 2 이상에서는 ",[27,1102,1103],{},"partitionKey","가 필수",[156,1106,1107,1112,1115],{},[174,1108,1109],{},[27,1110,1111],{},"policy",[174,1113,1114],{},"아래 참조",[174,1116,1117],{},"실행량 제한과 에이징",[156,1119,1120,1124,1126],{},[174,1121,1122],{},[27,1123,1046],{},[174,1125,1049],{},[174,1127,1128,554,1130,1132],{},[27,1129,882],{},[27,1131,888],{}," 상태 잡의 보존 시간",[156,1134,1135,1139,1141],{},[174,1136,1137],{},[27,1138,1059],{},[174,1140,1062],{},[174,1142,1143,554,1145,1147],{},[27,1144,885],{},[27,1146,891],{}," 상태 잡의 보존 시간. 이 기간 내의 잡은 재시도 대상",[15,1149,1150],{"id":1111},"Policy",[150,1152,1153,1163],{},[153,1154,1155],{},[156,1156,1157,1159,1161],{},[159,1158,161],{},[159,1160,1005],{},[159,1162,167],{},[169,1164,1165,1180,1195,1212,1238,1258,1276],{},[156,1166,1167,1172,1177],{},[174,1168,1169],{},[27,1170,1171],{},"paused",[174,1173,1174],{},[27,1175,1176],{},"false",[174,1178,1179],{},"enqueue 일시 정지",[156,1181,1182,1187,1192],{},[174,1183,1184],{},[27,1185,1186],{},"concurrency",[174,1188,1189],{},[27,1190,1191],{},"100",[174,1193,1194],{},"동시 실행 수의 상한",[156,1196,1197,1202,1206],{},[174,1198,1199],{},[27,1200,1201],{},"perKeyConcurrency",[174,1203,1204],{},[27,1205,1097],{},[174,1207,1208,1211],{},[27,1209,1210],{},"concurrencyKey","별 동시 실행 수의 상한",[156,1213,1214,1219,1224],{},[174,1215,1216],{},[27,1217,1218],{},"rate",[174,1220,1221],{},[27,1222,1223],{},"null",[174,1225,1226,1229,1230,1233,1234,1237],{},[27,1227,1228],{},"{ tokens, intervalMs }",". ",[27,1231,1232],{},"intervalMs","당 ",[27,1235,1236],{},"tokens","건까지 실행",[156,1239,1240,1245,1249],{},[174,1241,1242],{},[27,1243,1244],{},"perKeyRate",[174,1246,1247],{},[27,1248,1223],{},[174,1250,1251,1253,1254,1233,1256,1237],{},[27,1252,1228],{},". 키별로 ",[27,1255,1232],{},[27,1257,1236],{},[156,1259,1260,1265,1270],{},[174,1261,1262],{},[27,1263,1264],{},"agingIntervalMs",[174,1266,1267],{},[27,1268,1269],{},"60000",[174,1271,1272,1273,1275],{},"유효 우선순위가 1 올라가기까지의 대기 시간. ",[27,1274,1223],{},"은 에이징 없음",[156,1277,1278,1283,1288],{},[174,1279,1280],{},[27,1281,1282],{},"reaperGraceMs",[174,1284,1285],{},[27,1286,1287],{},"30000",[174,1289,1290,1293],{},[27,1291,1292],{},"timeoutMs","가 경과한 후, 결과가 보고되지 않은 잡을 무응답으로 판정하기까지의 유예 시간",[15,1295,1297],{"id":1296},"enqueueinput","EnqueueInput",[150,1299,1300,1310],{},[153,1301,1302],{},[156,1303,1304,1306,1308],{},[159,1305,161],{},[159,1307,1005],{},[159,1309,167],{},[169,1311,1312,1323,1335,1350,1364,1382,1395,1407,1422,1434,1449,1468,1479,1491,1506],{},[156,1313,1314,1318,1320],{},[174,1315,1316],{},[27,1317,868],{},[174,1319],{},[174,1321,1322],{},"enqueue 대상 binding 이름",[156,1324,1325,1330,1332],{},[174,1326,1327],{},[27,1328,1329],{},"payload",[174,1331],{},[174,1333,1334],{},"performer에 전달하는 값",[156,1336,1337,1342,1347],{},[174,1338,1339],{},[27,1340,1341],{},"priority",[174,1343,1344],{},[27,1345,1346],{},"0",[174,1348,1349],{},"숫자 우선순위. 클수록 먼저 실행",[156,1351,1352,1357,1361],{},[174,1353,1354],{},[27,1355,1356],{},"maxAttempts",[174,1358,1359],{},[27,1360,1036],{},[174,1362,1363],{},"시도 횟수의 상한",[156,1365,1366,1371,1374],{},[174,1367,1368],{},[27,1369,1370],{},"backoff",[174,1372,1373],{},"지수",[174,1375,1376,562,1379],{},[27,1377,1378],{},"fixed",[27,1380,1381],{},"exponential",[156,1383,1384,1388,1392],{},[174,1385,1386],{},[27,1387,1292],{},[174,1389,1390],{},[27,1391,1269],{},[174,1393,1394],{},"타임아웃까지의 시간",[156,1396,1397,1402,1404],{},[174,1398,1399],{},[27,1400,1401],{},"delayMs",[174,1403],{},[174,1405,1406],{},"실행 시작까지의 지연",[156,1408,1409,1414,1416],{},[174,1410,1411],{},[27,1412,1413],{},"runAt",[174,1415],{},[174,1417,1418,1419,1421],{},"실행 시작 시각. ",[27,1420,1401],{},"와 동시에 지정할 수 없음",[156,1423,1424,1429,1431],{},[174,1425,1426],{},[27,1427,1428],{},"expiresInMs",[174,1430],{},[174,1432,1433],{},"enqueue 시각부터 계산한 만료 기한",[156,1435,1436,1441,1443],{},[174,1437,1438],{},[27,1439,1440],{},"expiresAt",[174,1442],{},[174,1444,1445,1446,1448],{},"만료 시각. ",[27,1447,1428],{},"보다 우선",[156,1450,1451,1456,1461],{},[174,1452,1453],{},[27,1454,1455],{},"guarantee",[174,1457,1458],{},[27,1459,1460],{},"at-least-once",[174,1462,1463,562,1465],{},[27,1464,1460],{},[27,1466,1467],{},"at-most-once",[156,1469,1470,1474,1476],{},[174,1471,1472],{},[27,1473,1210],{},[174,1475],{},[174,1477,1478],{},"같은 키의 잡을 순서대로 실행하기 위한 키",[156,1480,1481,1486,1488],{},[174,1482,1483],{},[27,1484,1485],{},"uniqueKey",[174,1487],{},[174,1489,1490],{},"중복 제거 키",[156,1492,1493,1498,1501],{},[174,1494,1495],{},[27,1496,1497],{},"uniqueForMs",[174,1499,1500],{},"24시간",[174,1502,1503,1505],{},[27,1504,1485],{},"로 중복을 판정하는 기간",[156,1507,1508,1512,1514],{},[174,1509,1510],{},[27,1511,1103],{},[174,1513],{},[174,1515,1516],{},"shard를 분할한 경우 enqueue 대상을 결정하는 키",[132,1518,1519,1520,497],{},"옵션의 자세한 내용은 ",[493,1521,496],{"href":1522},"\u002Fko\u002Fguide\u002Fenqueue#%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3",[132,1524,1525,265,1528,144,1530,1532,1533,1535,265,1537,1539,1540,1542],{},[27,1526,1527],{},"createClient",[27,1529,407],{},[27,1531,1297],{},"을 인자로 받습니다.",[138,1534],{},[27,1536,18],{},[27,1538,407],{},"가 받는 입력에서는 ",[27,1541,868],{},"별로 payload와 필수 키의 타입이 도출됩니다.",[335,1544,1546],{"id":1545},"backoffの既定値","backoff 기본값",[20,1548,1550],{"className":22,"code":1549,"language":24,"meta":25,"style":25},"{ kind: 'exponential', baseMs: 1_000, factor: 2, maxMs: 3_600_000, jitter: true }\n",[27,1551,1552],{"__ignoreMap":25},[30,1553,1554,1557,1560,1563,1566,1568,1571,1573,1576,1578,1581,1583,1586,1588,1591,1593,1596,1598,1601,1603,1606],{"class":32,"line":33},[30,1555,1556],{"class":51},"{ ",[30,1558,1559],{"class":47},"kind",[30,1561,1562],{"class":51},": ",[30,1564,1565],{"class":700},"'exponential'",[30,1567,358],{"class":51},[30,1569,1570],{"class":47},"baseMs",[30,1572,1562],{"class":51},[30,1574,1575],{"class":40},"1_000",[30,1577,358],{"class":51},[30,1579,1580],{"class":47},"factor",[30,1582,1562],{"class":51},[30,1584,1585],{"class":40},"2",[30,1587,358],{"class":51},[30,1589,1590],{"class":47},"maxMs",[30,1592,1562],{"class":51},[30,1594,1595],{"class":40},"3_600_000",[30,1597,358],{"class":51},[30,1599,1600],{"class":47},"jitter",[30,1602,1562],{"class":51},[30,1604,1605],{"class":40},"true",[30,1607,704],{"class":51},[15,1609,1611],{"id":1610},"sweepoptions","SweepOptions",[150,1613,1614,1624],{},[153,1615,1616],{},[156,1617,1618,1620,1622],{},[159,1619,161],{},[159,1621,1005],{},[159,1623,167],{},[169,1625,1626,1638],{},[156,1627,1628,1633,1635],{},[174,1629,1630],{},[27,1631,1632],{},"olderThanMs",[174,1634,1062],{},[174,1636,1637],{},"종료된 잡과 Run을 목록에 남기는 시간",[156,1639,1640,1645,1650],{},[174,1641,1642],{},[27,1643,1644],{},"limit",[174,1646,1647],{},[27,1648,1649],{},"1000",[174,1651,1652],{},"1회에 삭제하는 건수의 상한. 잡과 Run 각각의 건수",[132,1654,1655,1656,1658],{},"cron 트리거를 설정하면 ",[27,1657,1632],{},"가 경과한 후 종료된 잡과 Run이 목록에서 삭제됩니다.",[132,1660,1661,1662,1664,1665,1667,1669,1670,554,1672,1675,1676,1678,554,1680,1682,1683,1685,1686,1675],{},"Run을 재개할 수 있는 기간은 ",[27,1663,221],{},"에서 설정합니다.",[138,1666],{},[27,1668,885],{}," 상태의 Run은 ",[27,1671,1632],{},[27,1673,1674],{},"runs.failedRetentionMs"," 중 더 긴 기간이 경과한 후 목록에서 삭제됩니다.",[138,1677],{},[27,1679,885],{},[27,1681,891],{}," 상태의 잡도 ",[27,1684,1632],{},"와 binding의 ",[27,1687,1059],{},[15,1689,1691],{"id":1690},"wranglerのbinding","wrangler의 binding",[150,1693,1694,1708],{},[153,1695,1696],{},[156,1697,1698,1700,1703,1705],{},[159,1699,868],{},[159,1701,1702],{},"종류",[159,1704,164],{},[159,1706,1707],{},"용도",[169,1709,1710,1725,1741,1756,1771,1786],{},[156,1711,1712,1717,1720,1722],{},[174,1713,1714],{},[27,1715,1716],{},"JOB_SHARD",[174,1718,1719],{},"Durable Object",[174,1721,180],{},[174,1723,1724],{},"잡 관리",[156,1726,1727,1731,1733,1735],{},[174,1728,1729],{},[27,1730,198],{},[174,1732,1719],{},[174,1734],{},[174,1736,1737,1738,1740],{},"Run 관리. ",[27,1739,190],{},"를 사용하는 경우 필요",[156,1742,1743,1747,1749,1751],{},[174,1744,1745],{},[27,1746,214],{},[174,1748,1719],{},[174,1750],{},[174,1752,1753,1754,1740],{},"정기 실행. ",[27,1755,206],{},[156,1757,1758,1763,1766,1768],{},[174,1759,1760],{},[27,1761,1762],{},"TSUMUGI_DB",[174,1764,1765],{},"D1",[174,1767,180],{},[174,1769,1770],{},"목록과 검색",[156,1772,1773,1778,1781,1783],{},[174,1774,1775],{},[27,1776,1777],{},"TSUMUGI_QUEUE",[174,1779,1780],{},"Queues",[174,1782,180],{},[174,1784,1785],{},"performer 실행",[156,1787,1788,1793,1796,1798],{},[174,1789,1790],{},[27,1791,1792],{},"TSUMUGI_METRICS",[174,1794,1795],{},"Analytics Engine",[174,1797],{},[174,1799,1800],{},"메트릭 기록",[132,1802,1803,1805,1806,1808,1809,1811],{},[27,1804,1792],{},"가 없으면 메트릭은 기록되지 않습니다.",[138,1807],{},"\n그 밖의 동작은 달라지지 않습니다.",[138,1810],{},"\n다른 필수 binding이 부족하면 REST API는 503으로 응답하며, 부족한 binding의 목록이 본문에 포함됩니다.",[132,1813,1814,1817,1818,1820,1821,1823],{},[27,1815,1816],{},"remote()","를 지정한 performer에는 Service Binding이 필요합니다.",[138,1819],{},"\nbinding 이름에는 고정된 이름을 사용하지 않고, ",[27,1822,147],{},"의 키를 그대로 지정합니다.",[20,1825,1829],{"className":1826,"code":1827,"language":1828,"meta":25,"style":25},"language-jsonc shiki shiki-themes github-light github-dark","\"services\": [\n  { \"binding\": \"MAIL\", \"service\": \"my-mailer\", \"entrypoint\": \"SendMail\" },\n]\n","jsonc",[27,1830,1831,1839,1875],{"__ignoreMap":25},[30,1832,1833,1836],{"class":32,"line":33},[30,1834,1835],{"class":700},"\"services\"",[30,1837,1838],{"class":51},": [\n",[30,1840,1841,1844,1847,1849,1852,1854,1857,1859,1862,1864,1867,1869,1872],{"class":32,"line":55},[30,1842,1843],{"class":51},"  { ",[30,1845,1846],{"class":40},"\"binding\"",[30,1848,1562],{"class":51},[30,1850,1851],{"class":700},"\"MAIL\"",[30,1853,358],{"class":51},[30,1855,1856],{"class":40},"\"service\"",[30,1858,1562],{"class":51},[30,1860,1861],{"class":700},"\"my-mailer\"",[30,1863,358],{"class":51},[30,1865,1866],{"class":40},"\"entrypoint\"",[30,1868,1562],{"class":51},[30,1870,1871],{"class":700},"\"SendMail\"",[30,1873,1874],{"class":51}," },\n",[30,1876,1877],{"class":32,"line":61},[30,1878,1879],{"class":51},"]\n",[132,1881,1882,1883,1885],{},"performer 없이 잡 enqueue에만 사용하는 Worker에 필요한 binding은 ",[27,1884,1716],{},"뿐입니다.",[15,1887,1889],{"id":1888},"サブパス","서브패스",[150,1891,1892,1901],{},[153,1893,1894],{},[156,1895,1896,1899],{},[159,1897,1898],{},"import 경로",[159,1900,167],{},[169,1902,1903,1922,1934,1946,1956,1966],{},[156,1904,1905,1910],{},[174,1906,1907],{},[27,1908,1909],{},"tsumugi",[174,1911,1912,358,1914,358,1916,358,1918,1921],{},[27,1913,18],{},[27,1915,407],{},[27,1917,519],{},[27,1919,1920],{},"TsumugiJobShard"," 등",[156,1923,1924,1929],{},[174,1925,1926],{},[27,1927,1928],{},"tsumugi\u002Fperformer",[174,1930,1931],{},[27,1932,1933],{},"Performer",[156,1935,1936,1941],{},[174,1937,1938],{},[27,1939,1940],{},"tsumugi\u002Fclient",[174,1942,1943,1945],{},[27,1944,1527],{},"와 관련 타입",[156,1947,1948,1952],{},[174,1949,1950],{},[27,1951,264],{},[174,1953,1954],{},[27,1955,268],{},[156,1957,1958,1963],{},[174,1959,1960],{},[27,1961,1962],{},"tsumugi\u002Ftypes",[174,1964,1965],{},"타입 전용",[156,1967,1968,1973],{},[174,1969,1970],{},[27,1971,1972],{},"tsumugi\u002Ftesting",[174,1974,1975,358,1978,358,1981,1921],{},[27,1976,1977],{},"runPerformer",[27,1979,1980],{},"createTestContext",[27,1982,1983],{},"simulateFlow",[132,1985,1986,1987,566,1989,1991,1992,1995,1996,1998,1999,2003],{},"공개된 npm 패키지는 ",[27,1988,1909],{},[138,1990],{},"\n셋업용 CLI는 ",[27,1993,1994],{},"npx tsumugi","로 실행합니다.",[138,1997],{},"\n명령어 목록은 ",[493,2000,2002],{"href":2001},"\u002Fko\u002Freference\u002Fcli","CLI","를 참조하세요.",[2005,2006,2007],"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 .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);}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":25,"searchDepth":61,"depth":61,"links":2009},[2010,2013,2014,2015,2016,2017,2018,2019,2020,2021,2024,2025,2026],{"id":17,"depth":55,"text":18,"children":2011},[2012],{"id":337,"depth":61,"text":338},{"id":245,"depth":55,"text":245},{"id":288,"depth":55,"text":288},{"id":751,"depth":55,"text":304},{"id":811,"depth":55,"text":316},{"id":909,"depth":55,"text":328},{"id":993,"depth":55,"text":994},{"id":1070,"depth":55,"text":1071},{"id":1111,"depth":55,"text":1150},{"id":1296,"depth":55,"text":1297,"children":2022},[2023],{"id":1545,"depth":61,"text":1546},{"id":1610,"depth":55,"text":1611},{"id":1690,"depth":55,"text":1691},{"id":1888,"depth":55,"text":1889},"defineTsumugi에 지정하는 설정 항목의 타입과 기본값, wrangler의 binding 설정에 대해","md",{},true,"\u002Fko\u002Freference\u002Fconfig","2026-07-22",{"title":6,"description":2027},"ko\u002Freference\u002Fconfig","2026-10-30","kIpU8hqgjsjIItwM8B1Prz892GqmgVPTc6fO21MyQgE",false,1794027574135]