Skip to content

Instantly share code, notes, and snippets.

import boto3
import os
from concurrent.futures import ThreadPoolExecutor
# Global variables
S3_BUCKET_NAME = 'yyyyy'
S3_PREFIX = 'xxxxl'
LOCAL_DOWNLOAD_DIRECTORY = './dest'
NUM_THREADS = 100
@vlio20
vlio20 / redis-cache-wrapper.ts
Created October 23, 2020 06:18
redis client wrapper for caching
import {AsyncCache} from 'utils-decorators';
import * as redis from 'redis';
import {RedisClient} from 'redis';
import {promisify} from 'util';
import * as config from 'config';
export class RedisCache<D> implements AsyncCache<D> {
delete: (key: string) => Promise<void>;
private readonly client: RedisClient;
@vlio20
vlio20 / throttle.ts
Created September 9, 2019 18:41
throttle
class MapView {
@throttle(1000);
logEvent(evwnts: AppEvent): void {
// some code
}
}
@vlio20
vlio20 / refreshable.ts
Created September 9, 2019 18:39
refreshable
class Dashboard {
@refreshable({
func: getCountroies,
intervalMs: 1000 * 60 * 60
})
countries: Countrie[];
}
function getCountroies(e: Error): Promise<Countrie[]> {
@vlio20
vlio20 / onError.ts
Created September 9, 2019 18:35
onError
class DataProvider {
@onError({
func: handleError
})
getData(params: QueryParams): Promise<Data> {
// some code
}
}
@vlio20
vlio20 / readonly.ts
Last active September 11, 2019 20:14
readonly
class User {
@readonly
id = 12345;
}
@vlio20
vlio20 / memoizeAsync.ts
Created September 9, 2019 18:30
memoizeAsync
class DataProvider {
@memoizeAsync(1000 * 60 * 60)
getData(params: QueryParams): Promise<Data> {
// some code
}
}
@vlio20
vlio20 / memoize.ts
Created September 9, 2019 15:12
memoize
class Fibonacci {
@memoize(10000)
fibo(n: number): number {
//some code
}
}
@vlio20
vlio20 / delay.ts
Created September 9, 2019 15:07
delay.ts
class EmailSender {
@delay(1000);
sendEmail(email: Email): Promise<void> {
// some code
}
}
@vlio20
vlio20 / debounce.ts
Last active September 12, 2019 04:40
debounce
class MapView {
@debounce(100);
onScroll(): void {
// some code
}
}