[4.03.20] Customer probes

This commit is contained in:
andrewso 2020-03-04 22:58:00 +00:00
parent c19b935c61
commit 3d94e22638
5 changed files with 81 additions and 23 deletions

View File

@ -6,7 +6,7 @@ metadata:
name: RESOURCE_NAME name: RESOURCE_NAME
namespace: production namespace: production
spec: spec:
replicas: 1 replicas: 0
selector: selector:
matchLabels: matchLabels:
app: RESOURCE_NAME app: RESOURCE_NAME
@ -64,24 +64,24 @@ spec:
ports: ports:
- containerPort: 9090 - containerPort: 9090
name: RESOURCE_NAME name: RESOURCE_NAME
# livenessProbe: livenessProbe:
# httpGet: httpGet:
# path: / path: /health
# port: 9090 port: 5000
# initialDelaySeconds: 30 initialDelaySeconds: 30
# periodSeconds: 30 periodSeconds: 30
# timeoutSeconds: 1 timeoutSeconds: 1
# successThreshold: 1 successThreshold: 1
# failureThreshold: 3 failureThreshold: 3
# readinessProbe: readinessProbe:
# httpGet: httpGet:
# port: 9090 port: 5000
# path: / path: /readiness
# initialDelaySeconds: 30 initialDelaySeconds: 30
# periodSeconds: 5 periodSeconds: 5
# timeoutSeconds: 1 timeoutSeconds: 1
# successThreshold: 1 successThreshold: 1
# failureThreshold: 10 failureThreshold: 10
imagePullPolicy: Always imagePullPolicy: Always
resources: resources:
requests: requests:

View File

@ -6,12 +6,20 @@ sys.path.append('/home/price-collector/')
from threading import Thread from threading import Thread
from pricing.collector import collector from pricing.collector import collector
from probes.probes import runFlaskProbes
def callCollector(args): def callCollector(args):
collector(args) collector(args)
def callProbes():
runFlaskProbes()
if __name__=='__main__': if __name__=='__main__':
Thread(target=callProbes).start()
# Dynamically create new child for each currency # Dynamically create new child for each currency
currencies = [ "btc_usd" ] currencies = [ "btc_usd" ]
for i in range(len(currencies)): # for i in range(len(currencies)):
Thread(target=callCollector, args=[currencies[i]]).start() # Thread(target=callCollector, args=[currencies[i]]).start()

View File

@ -2,8 +2,6 @@
from datetime import datetime, timedelta from datetime import datetime, timedelta
import sys
from time import sleep from time import sleep
from pricing.bitfinex import bitfinexPublicTicker, bitfinexHighLowVol from pricing.bitfinex import bitfinexPublicTicker, bitfinexHighLowVol

0
src/probes/__init__.py Normal file
View File

52
src/probes/probes.py Normal file
View File

@ -0,0 +1,52 @@
#!/usr/bin/env python
from flask import Flask
import json
from pricing.coinbase import coinbasePublicTicker
import logging as logger
logger.basicConfig(
level=logger.INFO,
format="%(asctime)s: %(levelname)s -- %(message)s",
datefmt='%Y-%m-%d %H:%M:%S'
)
app = Flask(__name__)
@app.route('/health')
def health():
return json.dumps({'status': 'UP'}), 200, {'ContentType':'application/json'}
@app.route('/readiness')
def readiness():
# Can it make a call to an exchange?
price = coinbasePublicTicker('btc_usd', logger)
if price != 0 :
return json.dumps({
'status': 'UP',
'app': {
'name': 'CryptoSky Price Collector',
'description': 'Projects Price Collector service that collects the: High, Low, Open, Close prices, Volume and calculates average price for the hour.',
'check_status': 'Success - Call to coinbase exchange',
'price': price
}
}), 200, {'ContentType': 'application/json'}
else:
return json.dumps({
'status': 'DOWN',
'app': {
'name': 'CryptoSky Price Collector',
'description': 'Projects Price Collector service that collects the: High, Low, Open, Close prices, Volume and calculates average price for the hour.',
'check_status': 'Failed - Call to coinbase exchange',
'price': price
}
}), 503, {'ContentType': 'application/json'}
def runFlaskProbes():
app.run()
if __name__ == '__main__':
runFlaskProbes()