Browse Source

Increase timeout in health check endpoint

pull/2621/head
Thomas 2 years ago
parent
commit
9620ee7c03
  1. 3
      apps/api/src/services/data-provider/alpha-vantage/alpha-vantage.service.ts
  2. 4
      apps/api/src/services/data-provider/coingecko/coingecko.service.ts
  3. 6
      apps/api/src/services/data-provider/data-provider.service.ts
  4. 4
      apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts
  5. 4
      apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts
  6. 3
      apps/api/src/services/data-provider/google-sheets/google-sheets.service.ts
  7. 2
      apps/api/src/services/data-provider/interfaces/data-provider.interface.ts
  8. 2
      apps/api/src/services/data-provider/manual/manual.service.ts
  9. 2
      apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts
  10. 7
      apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts

3
apps/api/src/services/data-provider/alpha-vantage/alpha-vantage.service.ts

@ -5,6 +5,7 @@ import {
IDataProviderHistoricalResponse, IDataProviderHistoricalResponse,
IDataProviderResponse IDataProviderResponse
} from '@ghostfolio/api/services/interfaces/interfaces'; } from '@ghostfolio/api/services/interfaces/interfaces';
import { DEFAULT_REQUEST_TIMEOUT } from '@ghostfolio/common/config';
import { DATE_FORMAT } from '@ghostfolio/common/helper'; import { DATE_FORMAT } from '@ghostfolio/common/helper';
import { Granularity } from '@ghostfolio/common/types'; import { Granularity } from '@ghostfolio/common/types';
import { Injectable } from '@nestjs/common'; import { Injectable } from '@nestjs/common';
@ -106,8 +107,10 @@ export class AlphaVantageService implements DataProviderInterface {
} }
public async getQuotes({ public async getQuotes({
requestTimeout = DEFAULT_REQUEST_TIMEOUT,
symbols symbols
}: { }: {
requestTimeout?: number;
symbols: string[]; symbols: string[];
}): Promise<{ [symbol: string]: IDataProviderResponse }> { }): Promise<{ [symbol: string]: IDataProviderResponse }> {
return {}; return {};

4
apps/api/src/services/data-provider/coingecko/coingecko.service.ts

@ -135,8 +135,10 @@ export class CoinGeckoService implements DataProviderInterface {
} }
public async getQuotes({ public async getQuotes({
requestTimeout = DEFAULT_REQUEST_TIMEOUT,
symbols symbols
}: { }: {
requestTimeout?: number;
symbols: string[]; symbols: string[];
}): Promise<{ [symbol: string]: IDataProviderResponse }> { }): Promise<{ [symbol: string]: IDataProviderResponse }> {
const response: { [symbol: string]: IDataProviderResponse } = {}; const response: { [symbol: string]: IDataProviderResponse } = {};
@ -150,7 +152,7 @@ export class CoinGeckoService implements DataProviderInterface {
setTimeout(() => { setTimeout(() => {
abortController.abort(); abortController.abort();
}, DEFAULT_REQUEST_TIMEOUT); }, requestTimeout);
const quotes = await got( const quotes = await got(
`${this.URL}/simple/price?ids=${symbols.join( `${this.URL}/simple/price?ids=${symbols.join(

6
apps/api/src/services/data-provider/data-provider.service.ts

@ -17,6 +17,7 @@ import { Inject, Injectable, Logger } from '@nestjs/common';
import { DataSource, MarketData, SymbolProfile } from '@prisma/client'; import { DataSource, MarketData, SymbolProfile } from '@prisma/client';
import { format, isValid } from 'date-fns'; import { format, isValid } from 'date-fns';
import { groupBy, isEmpty, isNumber } from 'lodash'; import { groupBy, isEmpty, isNumber } from 'lodash';
import ms from 'ms';
@Injectable() @Injectable()
export class DataProviderService { export class DataProviderService {
@ -52,6 +53,7 @@ export class DataProviderService {
symbol symbol
} }
], ],
requestTimeout: ms('30 seconds'),
useCache: false useCache: false
}); });
@ -236,9 +238,11 @@ export class DataProviderService {
public async getQuotes({ public async getQuotes({
items, items,
requestTimeout,
useCache = true useCache = true
}: { }: {
items: UniqueAsset[]; items: UniqueAsset[];
requestTimeout?: number;
useCache?: boolean; useCache?: boolean;
}): Promise<{ }): Promise<{
[symbol: string]: IDataProviderResponse; [symbol: string]: IDataProviderResponse;
@ -312,7 +316,7 @@ export class DataProviderService {
); );
const promise = Promise.resolve( const promise = Promise.resolve(
dataProvider.getQuotes({ symbols: symbolsChunk }) dataProvider.getQuotes({ requestTimeout, symbols: symbolsChunk })
); );
promises.push( promises.push(

4
apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts

@ -132,8 +132,10 @@ export class EodHistoricalDataService implements DataProviderInterface {
} }
public async getQuotes({ public async getQuotes({
requestTimeout = DEFAULT_REQUEST_TIMEOUT,
symbols symbols
}: { }: {
requestTimeout?: number;
symbols: string[]; symbols: string[];
}): Promise<{ [symbol: string]: IDataProviderResponse }> { }): Promise<{ [symbol: string]: IDataProviderResponse }> {
let response: { [symbol: string]: IDataProviderResponse } = {}; let response: { [symbol: string]: IDataProviderResponse } = {};
@ -151,7 +153,7 @@ export class EodHistoricalDataService implements DataProviderInterface {
setTimeout(() => { setTimeout(() => {
abortController.abort(); abortController.abort();
}, DEFAULT_REQUEST_TIMEOUT); }, requestTimeout);
const realTimeResponse = await got( const realTimeResponse = await got(
`${this.URL}/real-time/${eodHistoricalDataSymbols[0]}?api_token=${ `${this.URL}/real-time/${eodHistoricalDataSymbols[0]}?api_token=${

4
apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts

@ -114,8 +114,10 @@ export class FinancialModelingPrepService implements DataProviderInterface {
} }
public async getQuotes({ public async getQuotes({
requestTimeout = DEFAULT_REQUEST_TIMEOUT,
symbols symbols
}: { }: {
requestTimeout?: number;
symbols: string[]; symbols: string[];
}): Promise<{ [symbol: string]: IDataProviderResponse }> { }): Promise<{ [symbol: string]: IDataProviderResponse }> {
const response: { [symbol: string]: IDataProviderResponse } = {}; const response: { [symbol: string]: IDataProviderResponse } = {};
@ -129,7 +131,7 @@ export class FinancialModelingPrepService implements DataProviderInterface {
setTimeout(() => { setTimeout(() => {
abortController.abort(); abortController.abort();
}, DEFAULT_REQUEST_TIMEOUT); }, requestTimeout);
const response = await got( const response = await got(
`${this.URL}/quote/${symbols.join(',')}?apikey=${this.apiKey}`, `${this.URL}/quote/${symbols.join(',')}?apikey=${this.apiKey}`,

3
apps/api/src/services/data-provider/google-sheets/google-sheets.service.ts

@ -7,6 +7,7 @@ import {
} from '@ghostfolio/api/services/interfaces/interfaces'; } from '@ghostfolio/api/services/interfaces/interfaces';
import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service'; import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service';
import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile/symbol-profile.service'; import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile/symbol-profile.service';
import { DEFAULT_REQUEST_TIMEOUT } from '@ghostfolio/common/config';
import { DATE_FORMAT, parseDate } from '@ghostfolio/common/helper'; import { DATE_FORMAT, parseDate } from '@ghostfolio/common/helper';
import { Granularity } from '@ghostfolio/common/types'; import { Granularity } from '@ghostfolio/common/types';
import { Injectable, Logger } from '@nestjs/common'; import { Injectable, Logger } from '@nestjs/common';
@ -100,8 +101,10 @@ export class GoogleSheetsService implements DataProviderInterface {
} }
public async getQuotes({ public async getQuotes({
requestTimeout = DEFAULT_REQUEST_TIMEOUT,
symbols symbols
}: { }: {
requestTimeout?: number;
symbols: string[]; symbols: string[];
}): Promise<{ [symbol: string]: IDataProviderResponse }> { }): Promise<{ [symbol: string]: IDataProviderResponse }> {
const response: { [symbol: string]: IDataProviderResponse } = {}; const response: { [symbol: string]: IDataProviderResponse } = {};

2
apps/api/src/services/data-provider/interfaces/data-provider.interface.ts

@ -37,8 +37,10 @@ export interface DataProviderInterface {
getName(): DataSource; getName(): DataSource;
getQuotes({ getQuotes({
requestTimeout,
symbols symbols
}: { }: {
requestTimeout?: number;
symbols: string[]; symbols: string[];
}): Promise<{ [symbol: string]: IDataProviderResponse }>; }): Promise<{ [symbol: string]: IDataProviderResponse }>;

2
apps/api/src/services/data-provider/manual/manual.service.ts

@ -134,8 +134,10 @@ export class ManualService implements DataProviderInterface {
} }
public async getQuotes({ public async getQuotes({
requestTimeout = DEFAULT_REQUEST_TIMEOUT,
symbols symbols
}: { }: {
requestTimeout?: number;
symbols: string[]; symbols: string[];
}): Promise<{ [symbol: string]: IDataProviderResponse }> { }): Promise<{ [symbol: string]: IDataProviderResponse }> {
const response: { [symbol: string]: IDataProviderResponse } = {}; const response: { [symbol: string]: IDataProviderResponse } = {};

2
apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts

@ -88,8 +88,10 @@ export class RapidApiService implements DataProviderInterface {
} }
public async getQuotes({ public async getQuotes({
requestTimeout = DEFAULT_REQUEST_TIMEOUT,
symbols symbols
}: { }: {
requestTimeout?: number;
symbols: string[]; symbols: string[];
}): Promise<{ [symbol: string]: IDataProviderResponse }> { }): Promise<{ [symbol: string]: IDataProviderResponse }> {
if (symbols.length <= 0) { if (symbols.length <= 0) {

7
apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts

@ -6,7 +6,10 @@ import {
IDataProviderHistoricalResponse, IDataProviderHistoricalResponse,
IDataProviderResponse IDataProviderResponse
} from '@ghostfolio/api/services/interfaces/interfaces'; } from '@ghostfolio/api/services/interfaces/interfaces';
import { DEFAULT_CURRENCY } from '@ghostfolio/common/config'; import {
DEFAULT_CURRENCY,
DEFAULT_REQUEST_TIMEOUT
} from '@ghostfolio/common/config';
import { DATE_FORMAT } from '@ghostfolio/common/helper'; import { DATE_FORMAT } from '@ghostfolio/common/helper';
import { Granularity } from '@ghostfolio/common/types'; import { Granularity } from '@ghostfolio/common/types';
import { Injectable, Logger } from '@nestjs/common'; import { Injectable, Logger } from '@nestjs/common';
@ -157,8 +160,10 @@ export class YahooFinanceService implements DataProviderInterface {
} }
public async getQuotes({ public async getQuotes({
requestTimeout = DEFAULT_REQUEST_TIMEOUT,
symbols symbols
}: { }: {
requestTimeout?: number;
symbols: string[]; symbols: string[];
}): Promise<{ [symbol: string]: IDataProviderResponse }> { }): Promise<{ [symbol: string]: IDataProviderResponse }> {
const response: { [symbol: string]: IDataProviderResponse } = {}; const response: { [symbol: string]: IDataProviderResponse } = {};

Loading…
Cancel
Save