1+ <!doctype html>
2+ < html lang ="en ">
3+ < head >
4+ < meta charset ="utf-8 ">
5+ < meta name ="viewport " content ="width=device-width, initial-scale=1, minimum-scale=1 " />
6+ < meta name ="generator " content ="pdoc 0.9.2 " />
7+ < title > slack_sdk.http_retry.builtin_interval_calculators API documentation</ title >
8+ < meta name ="description " content ="" />
9+ < link rel ="preload stylesheet " as ="style " href ="https://cdnjs.cloudflare.com/ajax/libs/10up-sanitize.css/11.0.1/sanitize.min.css " integrity ="sha256-PK9q560IAAa6WVRRh76LtCaI8pjTJ2z11v0miyNNjrs= " crossorigin >
10+ < link rel ="preload stylesheet " as ="style " href ="https://cdnjs.cloudflare.com/ajax/libs/10up-sanitize.css/11.0.1/typography.min.css " integrity ="sha256-7l/o7C8jubJiy74VsKTidCy1yBkRtiUGbVkYBylBqUg= " crossorigin >
11+ < link rel ="stylesheet preload " as ="style " href ="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.1/styles/github.min.css " crossorigin >
12+ < style > : root {--highlight-color : # fe9 }.flex {display : flex !important }body {line-height : 1.5em }# content {padding : 20px }# sidebar {padding : 30px ;overflow : hidden}# sidebar > * : last-child {margin-bottom : 2cm }.http-server-breadcrumbs {font-size : 130% ;margin : 0 0 15px 0 }# footer {font-size : .75em ;padding : 5px 30px ;border-top : 1px solid # ddd ;text-align : right}# footer p {margin : 0 0 0 1em ;display : inline-block}# footer p : last-child {margin-right : 30px }h1 , h2 , h3 , h4 , h5 {font-weight : 300 }h1 {font-size : 2.5em ;line-height : 1.1em }h2 {font-size : 1.75em ;margin : 1em 0 .50em 0 }h3 {font-size : 1.4em ;margin : 25px 0 10px 0 }h4 {margin : 0 ;font-size : 105% }h1 : target , h2 : target , h3 : target , h4 : target , h5 : target , h6 : target {background : var (--highlight-color );padding : .2em 0 }a {color : # 058 ;text-decoration : none;transition : color .3s ease-in-out}a : hover {color : # e82 }.title code {font-weight : bold}h2 [id ^= "header-" ]{margin-top : 2em }.ident {color : # 900 }pre code {background : # f8f8f8 ;font-size : .8em ;line-height : 1.4em }code {background : # f2f2f1 ;padding : 1px 4px ;overflow-wrap : break-word}h1 code {background : transparent}pre {background : # f8f8f8 ;border : 0 ;border-top : 1px solid # ccc ;border-bottom : 1px solid # ccc ;margin : 1em 0 ;padding : 1ex }# http-server-module-list {display : flex;flex-flow : column}# http-server-module-list div {display : flex}# http-server-module-list dt {min-width : 10% }# http-server-module-list p {margin-top : 0 }.toc ul , # index {list-style-type : none;margin : 0 ;padding : 0 }# index code {background : transparent}# index h3 {border-bottom : 1px solid # ddd }# index ul {padding : 0 }# index h4 {margin-top : .6em ;font-weight : bold}@media (min-width : 200ex ){# index .two-column {column-count : 2 }}@media (min-width : 300ex ){# index .two-column {column-count : 3 }}dl {margin-bottom : 2em }dl dl : last-child {margin-bottom : 4em }dd {margin : 0 0 1em 3em }# header-classes + dl > dd {margin-bottom : 3em }dd dd {margin-left : 2em }dd p {margin : 10px 0 }.name {background : # eee ;font-weight : bold;font-size : .85em ;padding : 5px 10px ;display : inline-block;min-width : 40% }.name : hover {background : # e0e0e0 }dt : target .name {background : var (--highlight-color )}.name > span : first-child {white-space : nowrap}.name .class > span : nth-child (2 ){margin-left : .4em }.inherited {color : # 999 ;border-left : 5px solid # eee ;padding-left : 1em }.inheritance em {font-style : normal;font-weight : bold}.desc h2 {font-weight : 400 ;font-size : 1.25em }.desc h3 {font-size : 1em }.desc dt code {background : inherit}.source summary , .git-link-div {color : # 666 ;text-align : right;font-weight : 400 ;font-size : .8em ;text-transform : uppercase}.source summary > * {white-space : nowrap;cursor : pointer}.git-link {color : inherit;margin-left : 1em }.source pre {max-height : 500px ;overflow : auto;margin : 0 }.source pre code {font-size : 12px ;overflow : visible}.hlist {list-style : none}.hlist li {display : inline}.hlist li : after {content : ',\2002' }.hlist li : last-child : after {content : none}.hlist .hlist {display : inline;padding-left : 1em }img {max-width : 100% }td {padding : 0 .5em }.admonition {padding : .1em .5em ;margin-bottom : 1em }.admonition-title {font-weight : bold}.admonition .note , .admonition .info , .admonition .important {background : # aef }.admonition .todo , .admonition .versionadded , .admonition .tip , .admonition .hint {background : # dfd }.admonition .warning , .admonition .versionchanged , .admonition .deprecated {background : # fd4 }.admonition .error , .admonition .danger , .admonition .caution {background : lightpink}</ style >
13+ < style media ="screen and (min-width: 700px) "> @media screen and (min-width : 700px ){# sidebar {width : 30% ;height : 100vh ;overflow : auto;position : sticky;top : 0 }# content {width : 70% ;max-width : 100ch ;padding : 3em 4em ;border-left : 1px solid # ddd }pre code {font-size : 1em }.item .name {font-size : 1em }main {display : flex;flex-direction : row-reverse;justify-content : flex-end}.toc ul ul , # index ul {padding-left : 1.5em }.toc > ul > li {margin-top : .5em }}</ style >
14+ < style media ="print "> @media print{# sidebar h1 {page-break-before : always}.source {display : none}}@media print{* {background : transparent !important ;color : # 000 !important ;box-shadow : none !important ;text-shadow : none !important }a [href ]: after {content : " (" attr (href) ")" ;font-size : 90% }a [href ][title ]: after {content : none}abbr [title ]: after {content : " (" attr (title) ")" }.ir a : after , a [href ^= "javascript:" ]: after , a [href ^= "#" ]: after {content : "" }pre , blockquote {border : 1px solid # 999 ;page-break-inside : avoid}thead {display : table-header-group}tr , img {page-break-inside : avoid}img {max-width : 100% !important }@page {margin : 0.5cm }p , h2 , h3 {orphans : 3 ;widows : 3 }h1 , h2 , h3 , h4 , h5 , h6 {page-break-after : avoid}}</ style >
15+ < script defer src ="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.1/highlight.min.js " integrity ="sha256-Uv3H6lx7dJmRfRvH8TH6kJD1TSK1aFcwgx+mdg3epi8= " crossorigin > </ script >
16+ < script > window . addEventListener ( 'DOMContentLoaded' , ( ) => hljs . initHighlighting ( ) ) </ script >
17+ </ head >
18+ < body >
19+ < main >
20+ < article id ="content ">
21+ < header >
22+ < h1 class ="title "> Module < code > slack_sdk.http_retry.builtin_interval_calculators</ code > </ h1 >
23+ </ header >
24+ < section id ="section-intro ">
25+ < details class ="source ">
26+ < summary >
27+ < span > Expand source code</ span >
28+ </ summary >
29+ < pre > < code class ="python "> from typing import Optional
30+ from .jitter import Jitter, RandomJitter
31+ from .interval_calculator import RetryIntervalCalculator
32+
33+
34+ class FixedValueRetryIntervalCalculator(RetryIntervalCalculator):
35+ """Retry interval calculator that uses a fixed value."""
36+
37+ fixed_interval: float
38+
39+ def __init__(self, fixed_internal: float = 0.5):
40+ """Retry interval calculator that uses a fixed value.
41+
42+ Args:
43+ fixed_internal: The fixed interval seconds
44+ """
45+ self.fixed_interval = fixed_internal
46+
47+ def calculate_sleep_duration(self, current_attempt: int) -> float:
48+ return self.fixed_interval
49+
50+
51+ class BackoffRetryIntervalCalculator(RetryIntervalCalculator):
52+ """Retry interval calculator that calculates in the manner of Exponential Backoff And Jitter
53+ see also: https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/
54+ """
55+
56+ backoff_factor: float
57+ jitter: Jitter
58+
59+ def __init__(self, backoff_factor: float = 0.5, jitter: Optional[Jitter] = None):
60+ """Retry interval calculator that calculates in the manner of Exponential Backoff And Jitter
61+
62+ Args:
63+ backoff_factor: The factor for the backoff interval calculation
64+ jitter: The jitter logic implementation
65+ """
66+ self.backoff_factor = backoff_factor
67+ self.jitter = jitter if jitter is not None else RandomJitter()
68+
69+ def calculate_sleep_duration(self, current_attempt: int) -> float:
70+ interval = self.backoff_factor * (2 ** (current_attempt))
71+ sleep_duration = self.jitter.recalculate(interval)
72+ return sleep_duration</ code > </ pre >
73+ </ details >
74+ </ section >
75+ < section >
76+ </ section >
77+ < section >
78+ </ section >
79+ < section >
80+ </ section >
81+ < section >
82+ < h2 class ="section-title " id ="header-classes "> Classes</ h2 >
83+ < dl >
84+ < dt id ="slack_sdk.http_retry.builtin_interval_calculators.BackoffRetryIntervalCalculator "> < code class ="flex name class ">
85+ < span > class < span class ="ident "> BackoffRetryIntervalCalculator</ span > </ span >
86+ < span > (</ span > < span > backoff_factor: float = 0.5, jitter: Optional[< a title ="slack_sdk.http_retry.jitter.Jitter " href ="jitter.html#slack_sdk.http_retry.jitter.Jitter "> Jitter</ a > ] = None)</ span >
87+ </ code > </ dt >
88+ < dd >
89+ < div class ="desc "> < p > Retry interval calculator that calculates in the manner of Exponential Backoff And Jitter
90+ see also: < a href ="https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/ "> https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/</ a > </ p >
91+ < p > Retry interval calculator that calculates in the manner of Exponential Backoff And Jitter</ p >
92+ < h2 id ="args "> Args</ h2 >
93+ < dl >
94+ < dt > < strong > < code > backoff_factor</ code > </ strong > </ dt >
95+ < dd > The factor for the backoff interval calculation</ dd >
96+ < dt > < strong > < code > jitter</ code > </ strong > </ dt >
97+ < dd > The jitter logic implementation</ dd >
98+ </ dl > </ div >
99+ < details class ="source ">
100+ < summary >
101+ < span > Expand source code</ span >
102+ </ summary >
103+ < pre > < code class ="python "> class BackoffRetryIntervalCalculator(RetryIntervalCalculator):
104+ """Retry interval calculator that calculates in the manner of Exponential Backoff And Jitter
105+ see also: https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/
106+ """
107+
108+ backoff_factor: float
109+ jitter: Jitter
110+
111+ def __init__(self, backoff_factor: float = 0.5, jitter: Optional[Jitter] = None):
112+ """Retry interval calculator that calculates in the manner of Exponential Backoff And Jitter
113+
114+ Args:
115+ backoff_factor: The factor for the backoff interval calculation
116+ jitter: The jitter logic implementation
117+ """
118+ self.backoff_factor = backoff_factor
119+ self.jitter = jitter if jitter is not None else RandomJitter()
120+
121+ def calculate_sleep_duration(self, current_attempt: int) -> float:
122+ interval = self.backoff_factor * (2 ** (current_attempt))
123+ sleep_duration = self.jitter.recalculate(interval)
124+ return sleep_duration</ code > </ pre >
125+ </ details >
126+ < h3 > Ancestors</ h3 >
127+ < ul class ="hlist ">
128+ < li > < a title ="slack_sdk.http_retry.interval_calculator.RetryIntervalCalculator " href ="interval_calculator.html#slack_sdk.http_retry.interval_calculator.RetryIntervalCalculator "> RetryIntervalCalculator</ a > </ li >
129+ </ ul >
130+ < h3 > Class variables</ h3 >
131+ < dl >
132+ < dt id ="slack_sdk.http_retry.builtin_interval_calculators.BackoffRetryIntervalCalculator.backoff_factor "> < code class ="name "> var < span class ="ident "> backoff_factor</ span > : float</ code > </ dt >
133+ < dd >
134+ < div class ="desc "> </ div >
135+ </ dd >
136+ < dt id ="slack_sdk.http_retry.builtin_interval_calculators.BackoffRetryIntervalCalculator.jitter "> < code class ="name "> var < span class ="ident "> jitter</ span > : < a title ="slack_sdk.http_retry.jitter.Jitter " href ="jitter.html#slack_sdk.http_retry.jitter.Jitter "> Jitter</ a > </ code > </ dt >
137+ < dd >
138+ < div class ="desc "> </ div >
139+ </ dd >
140+ </ dl >
141+ < h3 > Inherited members</ h3 >
142+ < ul class ="hlist ">
143+ < li > < code > < b > < a title ="slack_sdk.http_retry.interval_calculator.RetryIntervalCalculator " href ="interval_calculator.html#slack_sdk.http_retry.interval_calculator.RetryIntervalCalculator "> RetryIntervalCalculator</ a > </ b > </ code > :
144+ < ul class ="hlist ">
145+ < li > < code > < a title ="slack_sdk.http_retry.interval_calculator.RetryIntervalCalculator.calculate_sleep_duration " href ="interval_calculator.html#slack_sdk.http_retry.interval_calculator.RetryIntervalCalculator.calculate_sleep_duration "> calculate_sleep_duration</ a > </ code > </ li >
146+ </ ul >
147+ </ li >
148+ </ ul >
149+ </ dd >
150+ < dt id ="slack_sdk.http_retry.builtin_interval_calculators.FixedValueRetryIntervalCalculator "> < code class ="flex name class ">
151+ < span > class < span class ="ident "> FixedValueRetryIntervalCalculator</ span > </ span >
152+ < span > (</ span > < span > fixed_internal: float = 0.5)</ span >
153+ </ code > </ dt >
154+ < dd >
155+ < div class ="desc "> < p > Retry interval calculator that uses a fixed value.</ p >
156+ < p > Retry interval calculator that uses a fixed value.</ p >
157+ < h2 id ="args "> Args</ h2 >
158+ < dl >
159+ < dt > < strong > < code > fixed_internal</ code > </ strong > </ dt >
160+ < dd > The fixed interval seconds</ dd >
161+ </ dl > </ div >
162+ < details class ="source ">
163+ < summary >
164+ < span > Expand source code</ span >
165+ </ summary >
166+ < pre > < code class ="python "> class FixedValueRetryIntervalCalculator(RetryIntervalCalculator):
167+ """Retry interval calculator that uses a fixed value."""
168+
169+ fixed_interval: float
170+
171+ def __init__(self, fixed_internal: float = 0.5):
172+ """Retry interval calculator that uses a fixed value.
173+
174+ Args:
175+ fixed_internal: The fixed interval seconds
176+ """
177+ self.fixed_interval = fixed_internal
178+
179+ def calculate_sleep_duration(self, current_attempt: int) -> float:
180+ return self.fixed_interval</ code > </ pre >
181+ </ details >
182+ < h3 > Ancestors</ h3 >
183+ < ul class ="hlist ">
184+ < li > < a title ="slack_sdk.http_retry.interval_calculator.RetryIntervalCalculator " href ="interval_calculator.html#slack_sdk.http_retry.interval_calculator.RetryIntervalCalculator "> RetryIntervalCalculator</ a > </ li >
185+ </ ul >
186+ < h3 > Class variables</ h3 >
187+ < dl >
188+ < dt id ="slack_sdk.http_retry.builtin_interval_calculators.FixedValueRetryIntervalCalculator.fixed_interval "> < code class ="name "> var < span class ="ident "> fixed_interval</ span > : float</ code > </ dt >
189+ < dd >
190+ < div class ="desc "> </ div >
191+ </ dd >
192+ </ dl >
193+ < h3 > Inherited members</ h3 >
194+ < ul class ="hlist ">
195+ < li > < code > < b > < a title ="slack_sdk.http_retry.interval_calculator.RetryIntervalCalculator " href ="interval_calculator.html#slack_sdk.http_retry.interval_calculator.RetryIntervalCalculator "> RetryIntervalCalculator</ a > </ b > </ code > :
196+ < ul class ="hlist ">
197+ < li > < code > < a title ="slack_sdk.http_retry.interval_calculator.RetryIntervalCalculator.calculate_sleep_duration " href ="interval_calculator.html#slack_sdk.http_retry.interval_calculator.RetryIntervalCalculator.calculate_sleep_duration "> calculate_sleep_duration</ a > </ code > </ li >
198+ </ ul >
199+ </ li >
200+ </ ul >
201+ </ dd >
202+ </ dl >
203+ </ section >
204+ </ article >
205+ < nav id ="sidebar ">
206+ < h1 > Index</ h1 >
207+ < div class ="toc ">
208+ < ul > </ ul >
209+ </ div >
210+ < ul id ="index ">
211+ < li > < h3 > Super-module</ h3 >
212+ < ul >
213+ < li > < code > < a title ="slack_sdk.http_retry " href ="index.html "> slack_sdk.http_retry</ a > </ code > </ li >
214+ </ ul >
215+ </ li >
216+ < li > < h3 > < a href ="#header-classes "> Classes</ a > </ h3 >
217+ < ul >
218+ < li >
219+ < h4 > < code > < a title ="slack_sdk.http_retry.builtin_interval_calculators.BackoffRetryIntervalCalculator " href ="#slack_sdk.http_retry.builtin_interval_calculators.BackoffRetryIntervalCalculator "> BackoffRetryIntervalCalculator</ a > </ code > </ h4 >
220+ < ul class ="">
221+ < li > < code > < a title ="slack_sdk.http_retry.builtin_interval_calculators.BackoffRetryIntervalCalculator.backoff_factor " href ="#slack_sdk.http_retry.builtin_interval_calculators.BackoffRetryIntervalCalculator.backoff_factor "> backoff_factor</ a > </ code > </ li >
222+ < li > < code > < a title ="slack_sdk.http_retry.builtin_interval_calculators.BackoffRetryIntervalCalculator.jitter " href ="#slack_sdk.http_retry.builtin_interval_calculators.BackoffRetryIntervalCalculator.jitter "> jitter</ a > </ code > </ li >
223+ </ ul >
224+ </ li >
225+ < li >
226+ < h4 > < code > < a title ="slack_sdk.http_retry.builtin_interval_calculators.FixedValueRetryIntervalCalculator " href ="#slack_sdk.http_retry.builtin_interval_calculators.FixedValueRetryIntervalCalculator "> FixedValueRetryIntervalCalculator</ a > </ code > </ h4 >
227+ < ul class ="">
228+ < li > < code > < a title ="slack_sdk.http_retry.builtin_interval_calculators.FixedValueRetryIntervalCalculator.fixed_interval " href ="#slack_sdk.http_retry.builtin_interval_calculators.FixedValueRetryIntervalCalculator.fixed_interval "> fixed_interval</ a > </ code > </ li >
229+ </ ul >
230+ </ li >
231+ </ ul >
232+ </ li >
233+ </ ul >
234+ </ nav >
235+ </ main >
236+ < footer id ="footer ">
237+ < p > Generated by < a href ="https://pdoc3.github.io/pdoc "> < cite > pdoc</ cite > 0.9.2</ a > .</ p >
238+ </ footer >
239+ </ body >
240+ </ html >
0 commit comments