0%

rhino | 项目搭建

如何在本地运行 Rhino 整个环境。

Rhino 共需要下面几个 Rhino 必要库

  • RhinoCollect
  • RhinoGateway
  • RhinoLogger
  • RhinoObject
  • RhinoPipe

所有的库都放在线上 devpi 中,需要下载才能使用。

环境说明

  • python3.9

运行

假设在本地将 devpi 库和其他依赖库都装好了,只需要写一个 main.py 文件,进行开启。

下面举一个简单的例子,是订阅 BINANCE USWAPdogebusddepthtrade 的信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
from RhinoLogger.RhinoLoggerObject.RhinoLoggerEnum import LoggerLevel
from RhinoLogger.RhinoLoggerObject.RhinoLoggerObject import LoggerConfig
from RhinoObject.Base.BaseEnum import ExchangeSub, DealDataType
from RhinoObject.Rhino.RhinoEnum import MethodEnum
from RhinoObject.Rhino.RhinoObject import SymbolInfo, RedisConfig, SymbolInfos, RhinoConfig

from RhinoCollect.RhinoCollect import RhinoCollect

# proxy = "http://127.0.0.1:1087"
proxy = None
logger_config = LoggerConfig(
cmdlevel=LoggerLevel.DEBUG.value,
filename='RhinoCollectlogs/log.log'
)
rhino_collect_config = RhinoConfig(
collect_type=DealDataType.REDIS.value,
redis_config=RedisConfig(
host=你 redis 的地址,
port=你本地redis的 port,
password="",
is_subscribe=True,
is_async=True
)
)
symbol_infos = SymbolInfos(
subscribes={
ExchangeSub.BINANCEUSWAP.value: True,
},
symbols={
ExchangeSub.BINANCEUSWAP.value:
[
SymbolInfo(
pair="DOGE_BUSD",
real_pair="dogebusd",
proxy=proxy,
symbol_methods=[MethodEnum.GETDEPTHS.value, MethodEnum.GETTRADES.value],
time_out=1,
),
],
}
)

RhinoCollect(logger_config, rhino_collect_config).start(symbol_infos)

你可以使用

1
nohup python3.9 main.py >/dev/null 2>&1 &

进行后台运行。上面成功运行后,数据就采集到 redischannel 里面了,下面就可以订阅拿数据了。

订阅数据

使用下面代码

1
2
3
4
5
6
7
8
9
10
11
12
13
import redis

pool = redis.ConnectionPool(host='redis ip',
port=redis port, db="",
password='')
r = redis.StrictRedis(connection_pool=pool)
p = r.pubsub()
p.subscribe("RHINODEPTH", "RHINOTRADE")
for item in p.listen():
print("Listen on channel : %s " % item['channel'].decode())
if item['type'] == 'message':
data = item['data'].decode()
print("From %s get message : %s" % (item['channel'].decode(), item['data'].decode()))
请我喝杯咖啡吧~