Skip to content

Instantly share code, notes, and snippets.

View rednafi's full-sized avatar
🏠
Working from home

Redowan Delowar rednafi

🏠
Working from home
View GitHub Profile
@rednafi
rednafi / cloudSettings
Last active June 17, 2022 19:11
Visual Studio Code Settings Sync Gist
{"lastUpload":"2020-08-20T20:27:31.107Z","extensionVersion":"v3.4.3"}
@rednafi
rednafi / mysql_connection.py
Last active June 17, 2022 09:07
Reusable Class for MySql Connection with Pooling in Python
import os
import pymysql
from DBUtils.PooledDB import PooledDB
from dotenv import load_dotenv
MYSQL_CONFIG = {
"host": "localhost",
"port": 3306,
"db": "test_db",
# Welcome to Jekyll!
#
# This config file is meant for settings that affect your whole blog.
#
# If you need help with YAML syntax, here are some quick references for you:
# https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml
# https://learnxinyminutes.com/docs/yaml/
title: Redowan's Digressions
description: Sporadic cogitations on software, tech & personal beliefs
@rednafi
rednafi / retry.py
Last active April 5, 2020 09:33
Retry decorator with exponential backoff
import logging
import time
from functools import partial, wraps
def retry(func=None, exception=Exception, n_tries=5, delay=5, backoff=1, logger=False):
"""Retry decorator with exponential backoff.
Parameters
----------
@rednafi
rednafi / concurrent_hit.py
Last active March 19, 2024 12:52
1000 concurrent API request with ThreadPoolExecutor Python
import time
from concurrent.futures import ThreadPoolExecutor
from functools import wraps
import requests
from tqdm import tqdm
def timeit(method):
@wraps(method)
@rednafi
rednafi / .env
Last active June 3, 2020 14:52
Pedantic config management using Pydantic
ENV_STATE="dev" # or prod
DEV_REDIS_HOST="127.0.0.1"
DEV_REDIS_PORT="4000"
PROD_REDIS_HOST="127.0.0.2"
PROD_REDIS_PORT="5000"
@rednafi
rednafi / calling_async_func.py
Last active June 4, 2020 11:42
Async By Example
import asyncio
import time
async def square_func(n: int) -> int:
await asyncio.sleep(2)
print(f"square_func sleeping for 2 seconds")
return n * n
@rednafi
rednafi / async_redis.py
Created June 7, 2020 06:37
Seems like aioredis isn't being maintained anymore. This uses redis-py in async mode
import json
import os
import sys
from datetime import timedelta
import httpx
import redis
from dotenv import load_dotenv
from fastapi import FastAPI
from asgiref.sync import sync_to_async
@rednafi
rednafi / proxy_pattern_python.py
Last active June 16, 2020 06:55
Using the Proxy design pattern in Python to decouple logging and exception handling from the core logic
"""
This can be used as a template to execute Proxy
design pattern with Python.
* Get the json response from PostMan API
url: https://postman-echo.com/get?foo1=bar_1&foo2=bar_2
* Print the header properties
* Print the argument properties
@rednafi
rednafi / sqla_dict.py
Last active June 30, 2020 18:03
Python's dict-like custom data structure that can store data in any SQLAlchemy supported database. Uses transaction.
"""
This is a self contained custom data structure with dict like
key-value storage capabilities.
* Can store the key-value pairs in any sqlalchemy supported db
* Employs thread safe transactional scope
* Modular, just change the session_scope to use a different db
* This example uses sqlite db for demonstration purpose
The code is inspired by Raymond Hettinger's talk `Build powerful,