получчаю непонятную ошибку , выкидывает из дебагера
ошибка
"Traceback (most recent call last):
File "_pydevd_frame_eval/pydevd_frame_evaluator.pyx", line 293, in _pydevd_frame_eval.pydevd_frame_evaluator.get_func_code_info
File "_pydevd_frame_eval/pydevd_frame_evaluator.pyx", line 379, in _pydevd_frame_eval.pydevd_frame_evaluator._CacheValue.compute_force_stay_in_untraced_mode
File "_pydevd_frame_eval/pydevd_frame_evaluator.pyx", line 391, in _pydevd_frame_eval.pydevd_frame_evaluator._CacheValue.compute_force_stay_in_untraced_mode
TypeError: 'NoneType' object is not iterable
Exception ignored in: '_pydevd_frame_eval.pydevd_frame_evaluator.get_bytecode_while_frame_eval_39'
Traceback (most recent call last):
File "_pydevd_frame_eval/pydevd_frame_evaluator.pyx", line 293, in _pydevd_frame_eval.pydevd_frame_evaluator.get_func_code_info
File "_pydevd_frame_eval/pydevd_frame_evaluator.pyx", line 379, in _pydevd_frame_eval.pydevd_frame_evaluator._CacheValue.compute_force_stay_in_untraced_mode
File "_pydevd_frame_eval/pydevd_frame_evaluator.pyx", line 391, in _pydevd_frame_eval.pydevd_frame_evaluator._CacheValue.compute_force_stay_in_untraced_mode
TypeError: 'NoneType' object is not iterable"
это мой код , я только осваиваю асинхронность и работу с классами ,через дебаг не получается отловить эту ошибку , разные части кода запускаю отдельно все работает
import asyncio
import json
import time
import websockets
# сделки по монете
class simbol_volue:
# инициализация объекта класса
def __init__(self, name,trades = None):
self.name = name
self.trades = []
# пополнение списка сделок
def trades_append(self,value,time):
self.trades.append([value,time])
# получение суммы всех сделок
def get_trades_value(self):
value = 0
for i in self.trades:
value += int(i[0])
return value
# возвращает последнюю сделку
def get_last_trade(self):
return self.trades[len(self.trades)-1]
# очищает список сделок от первых len сделок
def list_cleanup(self,long):
if len(self.trades)>0:
for i in range(long):
self.trades.pop(0)
# поиск сделок прошедших в последнюю минуту
def volume_search_in_1_minute(self):
volume = 0
count = 0
# если сделок больше одной считаю объем , удаляю эти сделки
if len(self.trades) > 1:
current_time = self.trades[0][1].tm_min
for i in self.trades:
if i[1].tm_min == current_time:
volume += int(i[0])
count += 1
self.list_cleanup(count)
return volume
# если сделок 1 или 0 удаляю эти сделки
else:
self.list_cleanup(len(self.trades))
return volume
simbol = {}
simbol['adausdt'] = simbol_volue('adausdt')
simbol['galusdt'] = simbol_volue('galausdt')
simbol['awaxusdt'] = simbol_volue('awaxusdt')
simbol['neousdt'] = simbol_volue('neousdt')
# запуск в 02 секунду
# while True:
# if time.localtime()[5] == 2:
# time.sleep(1)
# break
min = False
async def time_print():
while True:
print(time.strftime('%X'))
await asyncio.sleep(1)
async def timer():
global min
while True:
if time.localtime()[5] == 1:
min = True
await asyncio.sleep(0.5)
async def get_volue_in_min():
global min ,simbol
while True:
if min is True and time.localtime()[5]==2:
for i in simbol:
t_prnt = time.localtime()
print(t_prnt[3],':',t_prnt[4],':',t_prnt[5],' ',i,' ',simbol[i].volume_search_in_1_minute())
min = False
await asyncio.sleep(0.5)
async def get_trades():
async with websockets.connect("wss://fstream.binance.com/stream?streams=adausdt@aggTrade/galusdt@aggTrade/awaxusdt@aggTrade/neousdt@aggTrade") as websocket:
while True:
response = await websocket.recv()
data = json.loads(response)
trans_time = time.localtime(data['data']['T']/1000)
trans_value = data['data']['q']
name = data['data']['s'].lower()
simbol[name].trades_append(trans_value,trans_time)
async def main():
task1 = asyncio.create_task(timer())
task2 = asyncio.create_task(get_trades())
task3 = asyncio.create_task(time_print())
task4 = asyncio.create_task(get_volue_in_min())
await task1
await task2
await task3
await task4
asyncio.run(main())