mirror of
https://github.com/langgenius/dify.git
synced 2026-02-19 01:14:44 +08:00
Some checks are pending
autofix.ci / autofix (push) Waiting to run
Build and Push API & Web / build (api, DIFY_API_IMAGE_NAME, linux/amd64, build-api-amd64) (push) Waiting to run
Build and Push API & Web / build (api, DIFY_API_IMAGE_NAME, linux/arm64, build-api-arm64) (push) Waiting to run
Build and Push API & Web / build (web, DIFY_WEB_IMAGE_NAME, linux/amd64, build-web-amd64) (push) Waiting to run
Build and Push API & Web / build (web, DIFY_WEB_IMAGE_NAME, linux/arm64, build-web-arm64) (push) Waiting to run
Build and Push API & Web / create-manifest (api, DIFY_API_IMAGE_NAME, merge-api-images) (push) Blocked by required conditions
Build and Push API & Web / create-manifest (web, DIFY_WEB_IMAGE_NAME, merge-web-images) (push) Blocked by required conditions
Main CI Pipeline / Check Changed Files (push) Waiting to run
Main CI Pipeline / API Tests (push) Blocked by required conditions
Main CI Pipeline / Web Tests (push) Blocked by required conditions
Main CI Pipeline / Style Check (push) Waiting to run
Main CI Pipeline / VDB Tests (push) Blocked by required conditions
Main CI Pipeline / DB Migration Test (push) Blocked by required conditions
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
41 lines
959 B
TypeScript
41 lines
959 B
TypeScript
import { RateLimitError, NetworkError, TimeoutError } from "../errors/dify-error";
|
|
|
|
export const sleep = (ms: number): Promise<void> =>
|
|
new Promise((resolve) => {
|
|
setTimeout(resolve, ms);
|
|
});
|
|
|
|
export const getRetryDelayMs = (
|
|
attempt: number,
|
|
retryDelaySeconds: number,
|
|
retryAfterSeconds?: number
|
|
): number => {
|
|
if (retryAfterSeconds && retryAfterSeconds > 0) {
|
|
return retryAfterSeconds * 1000;
|
|
}
|
|
const base = retryDelaySeconds * 1000;
|
|
const exponential = base * Math.pow(2, Math.max(0, attempt - 1));
|
|
const jitter = Math.random() * base;
|
|
return exponential + jitter;
|
|
};
|
|
|
|
export const shouldRetry = (
|
|
error: unknown,
|
|
attempt: number,
|
|
maxRetries: number
|
|
): boolean => {
|
|
if (attempt >= maxRetries) {
|
|
return false;
|
|
}
|
|
if (error instanceof TimeoutError) {
|
|
return true;
|
|
}
|
|
if (error instanceof NetworkError) {
|
|
return true;
|
|
}
|
|
if (error instanceof RateLimitError) {
|
|
return true;
|
|
}
|
|
return false;
|
|
};
|