Всем привет! Помогите с кодом.
Вопрос такой: могу ли я как то транслировать эти данные в mysql (mysql не принципиален, можно и другую БД)? Данные идут ("ask":3814.18,"bid":3813.18 "epoch":1605111582 "quote":3813.68,"symbol":"R_100")
. Как их отфильтровать и импортировать в БД не пойму, может я могу как то с ними еще работать вывести в CSV? Перелопатил уже много кода и не могу понять в какую сторону двигаться.
import websocket
import json
websocket.enableTrace(True)
apiUri = "wss://ws.binaryws.com/websockets/v3?app_id=1089"
Object = {'ticks':'R_100'}
def ws_open(ws):
json_data = json.dumps(Object)
ws.send(json_data)
def ws_message(ws, message):
print('ticks update: %s' % message)
ws = websocket.WebSocketApp(apiUri,on_message = ws_message)
ws.on_open = ws_open
ws.run_forever()
получаю ответ
-— request header —-
GET /websockets/v3?app_id=1089 HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: ws.binaryws.com
Origin: http://ws.binaryws.com
Sec-WebSocket-Key: N9Wt6WRmwv420L/KZbIPBQ==
Sec-WebSocket-Version: 13
-— response header —-
HTTP/1.1 101 Switching Protocols
Date: Wed, 11 Nov 2020 16:19:41 GMT
Content-Length: 0
Connection: upgrade
Set-Cookie: __cfduid=de8bd711cb15530a0bfe128ee60ee5a8b1605111581; expires=Fri, 11-Dec-20 16:19:41 GMT; path=/; domain=.binaryws.com; HttpOnly; SameSite=Lax
Content-Language: en
Upgrade: websocket
Sec-WebSocket-Accept: mIwXeHSTBPUuIdoMtoy7h6FYwNs=
CF-Cache-Status: DYNAMIC
cf-request-id: 0659b4214700007b53829d8000000001
Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Server: cloudflare
CF-RAY: 5f09561539857b53-DME
send: b'\x81\x92b\xa7\xfa\xb4\x19\x85\x8e\xdd\x01\xcc\x89\x96X\x87\xd8\xe6=\x96\xca\x84@\xda'
ticks update: {"echo_req":{"ticks":"R_100"},"msg_type":"tick","subscription":{"id":"9e68208d-1efe-5ed1-1735-fb2d6d264f27"},"tick":{"ask":3814.18,"bid":3813.18,"epoch":1605111582,"id":"9e68208d-1efe-5ed1-1735-fb2d6d264f27","pip_size":2,"quote":3813.68,"symbol":"R_100"}}
сейчас имею такой ответ,а если точнее их один двух видов, но в ответе они в одну строку,так как внес еще строку websocket.debug(json.dumps(message)) в ws_message в целях эксперимента
ticks update: {"echo_req":{"ticks":"R_100"},"msg_type":"tick","subscription":{"id":"99d4512b-fd98-85ea-9417-2494ee2a3857"},"tick":{"ask":3541.87,"bid":3541.07,"epoch":1606484220,"id":"99d4512b-fd98-85ea-9417-2494ee2a3857","pip_size":2,"quote":3541.47,"symbol":"R_100"}}
"{\"echo_req\":{\"ticks\":\"R_100\"},\"msg_type\":\"tick\",\"subscription\":{\"id\":\"99d4512b-fd98-85ea-9417-2494ee2a3857\"},\"tick\":{\"ask\":3541.87,\"bid\":3541.07,\"epoch\":1606484220,\"id\":\"99d4512b-fd98-85ea-9417-2494ee2a3857\",\"pip_size\":2,\"quote\":3541.47,\"symbol\":\"R_100\"}}"
def ws_message(ws, message):
print('ticks update: %s' % message)
websocket.debug(json.dumps(message))
мне подсказывал один человек что надо делать return так как типо туда нечего не возвращается но если я делаю
return ws_message(ws, message)
код спамит с задержкой в милисекунду(образно) одну и туже строку типа как ответ выше и падает с такими словами
Python runtime state: initialized
Thread 0x00000b74 (most recent call first):
File "C:\Python39\lib\threading.py", line 316 in wait
File "C:\Python39\lib\threading.py", line 574 in wait
File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\pydevd.py", line 228 in _on_run
File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_comm.py", line 168 in run
File "C:\Python39\lib\threading.py", line 950 in _bootstrap_inner
File "C:\Python39\lib\threading.py", line 908 in _bootstrap
Thread 0x00003d98 (most recent call first):
File "C:\Python39\lib\threading.py", line 316 in wait
File "C:\Python39\lib\threading.py", line 574 in wait
File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\pydevd.py", line 182 in _on_run
File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_comm.py", line 168 in run
File "C:\Python39\lib\threading.py", line 950 in _bootstrap_inner
File "C:\Python39\lib\threading.py", line 908 in _bootstrap
Thread 0x00003c44 (most recent call first):
File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_comm.py", line 282 in _read_line
File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_comm.py", line 300 in _on_run
File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_comm.py", line 168 in run
File "C:\Python39\lib\threading.py", line 950 in _bootstrap_inner
File "C:\Python39\lib\threading.py", line 908 in _bootstrap
Thread 0x00002690 (most recent call first):
File "C:\Python39\lib\threading.py", line 316 in wait
File "C:\Python39\lib\queue.py", line 180 in get
File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_comm.py", line 411 in _on_run
File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_comm.py", line 168 in run
File "C:\Python39\lib\threading.py", line 950 in _bootstrap_inner
File "C:\Python39\lib\threading.py", line 908 in _bootstrap
Current thread 0x00003ec4 (most recent call first):
File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_trace_dispatch_regular.py", line 368 in __call__
File "C:\Python39\lib\logging\__init__.py", line 425 in _format
File "C:\Python39\lib\logging\__init__.py", line 430 in format
File "C:\Python39\lib\logging\__init__.py", line 631 in formatMessage
File "C:\Python39\lib\logging\__init__.py", line 662 in format
File "C:\Python39\lib\logging\__init__.py", line 923 in format
File "C:\Python39\lib\logging\__init__.py", line 1079 in emit
File "C:\Python39\lib\logging\__init__.py", line 948 in handle
File "C:\Python39\lib\logging\__init__.py", line 1649 in callHandlers
File "C:\Python39\lib\logging\__init__.py", line 1587 in handle
File "C:\Python39\lib\logging\__init__.py", line 1577 in _log
File "C:\Python39\lib\logging\__init__.py", line 1422 in debug
File "C:\Python39\lib\site-packages\websocket\_logging.py", line 68 in debug
File "C:\Users\NoName\source\repos\PythonApplication2\PythonApplication2\PythonApplication2.py", line 18 in ws_message
File "C:\Users\NoName\source\repos\PythonApplication2\PythonApplication2\PythonApplication2.py", line 19 in ws_message
если делаю так то получаю две строки сообщения и поидее одна из них нормальный json
def ws_message(ws, message):
parser = json.loads(message)
json_eho = json.dumps(parser)
print(str(json_eho))
print(str(parser))
return (parser)
если делаю return(json_eho) ответы меняю кавычки с одних на другие и все
{'echo_req': {'ticks': 'R_100'}, 'msg_type': 'tick', 'subscription': {'id': 'cd11f737-8235-8db2-8c5f-a57d9e16eabd'}, 'tick': {'ask': 3320.55, 'bid': 3319.75, 'epoch': 1606520352, 'id': 'cd11f737-8235-8db2-8c5f-a57d9e16eabd', 'pip_size': 2, 'quote': 3320.15, 'symbol': 'R_100'}}
{"echo_req":{"ticks":"R_100"},"msg_type":"tick","subscription":"id":"cd11f737-8235-8db2-8c5fa57d9e16eabd"},"tick":"ask":3320.55,"bid":3319.75,"epoch":1606520352,"id":"cd11f737-8235-8db2-8c5f-57d9e16eabd","pip_size":2,"quote":3320.15,"symbol":"R_100"}}
как передать эту строку дальше чтобы я хотя бы мог сделать print(websocket_message) вне функции
Дошёл до такого варианта)) всё в переменных, не понимаю могу ли я как то передать строку в mysql и распарсить её в какую нить таблицу, или сначала её надо записать в файл, а потом обрабатывать файл, главное что у меня уже всё не в потоке
import json
import websocket
from websocket import create_connection
websocket.enableTrace(True)
ws = create_connection('wss://ws.binaryws.com/websockets/v3?app_id=1089')
ws.send(json.dumps({'ticks': 'R_100'}))
result = ws.recv()
parser = json.loads(result)
json_eho = json.dumps(parser)
print(json_eho)
получаю ответ
{"echo_req": {"ticks": "R_100"}, "msg_type": "tick", "subscription": {"id": "0e37ccf0-3ed2-ad75-f28a-47a2bedd1ac8"}, "tick": {"ask": 3405.39, "bid": 3404.59, "epoch": 1606578100, "id": "0e37ccf0-3ed2-ad75-f28a-47a2bedd1ac8", "pip_size": 2, "quote": 3404.99, "symbol": "R_100"}}
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Вообщем, не понимаю как правильно создавать второе окноЕсть функция addTimer(), как метод класса главного окна MainWindow
Имеется следующая проблемаЕсть функция для расчета среднего балла (индивидуальных и общего)
Можно ли double "засунуть" в bitset, чтобы он вывел его в 2виде?