init
This commit is contained in:
parent
d27545be64
commit
5090972b73
|
|
@ -0,0 +1 @@
|
|||
__pycache__
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
FROM python:latest
|
||||
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
COPY requirements.txt ./
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
COPY . .
|
||||
|
||||
CMD [ "python", "./app.py" ]
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
import os
|
||||
from threading import Thread
|
||||
import json
|
||||
from rethinkdb import RethinkDB
|
||||
from pybit.unified_trading import WebSocket
|
||||
from time import sleep
|
||||
|
||||
r = RethinkDB()
|
||||
|
||||
# RethinkDB settings
|
||||
RDB_HOST = os.environ.get('RETHINKDB_URL')
|
||||
RDB_PORT = os.environ.get('RETHINKDB_PORT')
|
||||
DB_NAME = "finfree"
|
||||
TABLE_NAME = 'conditions'
|
||||
|
||||
# Initialize RethinkDB connection
|
||||
rdb_conn = r.connect(host=RDB_HOST, port=RDB_PORT, db=DB_NAME)
|
||||
|
||||
# WebSocket setup
|
||||
WS_URL = "wss://stream.bybit.com/v5/public/linear"
|
||||
ws = WebSocket(
|
||||
testnet=True,
|
||||
channel_type="linear",
|
||||
)
|
||||
|
||||
subscribed = set()
|
||||
|
||||
def fetch_symbols():
|
||||
try:
|
||||
symbols = r.table(TABLE_NAME).pluck('symbol').run(rdb_conn)
|
||||
return list(set([symbol['symbol'] for symbol in symbols]))
|
||||
except Exception as e:
|
||||
print(f"Error fetching symbols: {e}")
|
||||
return []
|
||||
|
||||
def handle_message(message):
|
||||
print(message)
|
||||
|
||||
def watch_symbols_table():
|
||||
feed = r.table(TABLE_NAME).changes().run(rdb_conn)
|
||||
for change in feed:
|
||||
print(f"Change detected: {change}")
|
||||
if change['new_val'] and not change['old_val']: # New symbol added
|
||||
symbol = change['new_val']['symbol']
|
||||
subscribe_to_symbol(symbol)
|
||||
|
||||
def subscribe_to_symbol(symbol):
|
||||
if symbol not in subscribed:
|
||||
subscribed.add(symbol)
|
||||
ws.ticker_stream(
|
||||
symbol=symbol,
|
||||
callback=handle_message
|
||||
)
|
||||
|
||||
if __name__ == "__main__":
|
||||
for symbol in fetch_symbols():
|
||||
subscribe_to_symbol(symbol)
|
||||
|
||||
watch_symbols_table()
|
||||
|
||||
while True:
|
||||
sleep(1)
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
flask
|
||||
rethinkdb
|
||||
pybit
|
||||
Loading…
Reference in New Issue