Всем привет! Помогите с кодом.
Вопрос такой: могу ли я как то транслировать эти данные в 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"}}
Вообщем, не понимаю как правильно создавать второе окноЕсть функция addTimer(), как метод класса главного окна MainWindow
Имеется следующая проблемаЕсть функция для расчета среднего балла (индивидуальных и общего)
Можно ли double "засунуть" в bitset, чтобы он вывел его в 2виде?