Anonymous
Ну ведь в закрепе написано о чатике
Ingli
Alex
Заэвейтил fetch_page ничего не поменялось
Tishka17
Блин
Tishka17
Tishka17
Tishka17
Tishka17
Всё поля при чём
Anonymous
Alex
content = loop.run_until_complete(await fetch_page(session, 'https://example.com/test'))
Alex
Или я не туда втулил Эвейт ?
Tishka17
Tishka17
Не надо так
Tishka17
Тебе луп нужен только если ты не хочешь ждать результат выполнения, тогда туда кидаешь таск и всё
Alex
Конкретнее, что и где убрать ?
Alex
Сложно понять
Alex
content = await fetch_page(session, 'https://www.example.com/test')
Alex
результат тот же Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x0000000003C2A5F8>
Alex
Я так понял ошибка происходит в этом месте : with aiohttp.ClientSession(loop=loop) as session:
Alex
Так как до этой строчки оператор принт работает, а уже после неё нет
Kirill
Tishka17
Alex
async with перестало работать вообще
Tishka17
Перестало? Как проявляется?
Alex
Ни ошибок, ни принта с контентом
Tishka17
Попробуй убрать явную передачу лупа в сессию
Tishka17
Хотя наверно без разницы
Tishka17
Alex
да
Alex
import websocket
import requests
import time
import asyncio
import aiohttp
async def fetch_page(session, url):
with aiohttp.Timeout(10):
async with session.get(url) as response:
assert response.status == 200
return await response.read()
def on_message(ws, message):
start_time = time.time()
print("WSS: ",ws)
#async def go():
#task2 = asyncio.create_task(https_run())
#await asyncio.gather(task2)
#asyncio.run(go())
async def go_https():
loop = asyncio.get_event_loop()
#print("https ",loop)
async with aiohttp.ClientSession(loop=loop) as session:
content = await fetch_page(session, 'https://www.example.com/test')
print("https ",content)
loop.close()
#session.close()
#go_https()
asyncio.run(go_https())
print("--- %s seconds ---" % (time.time() - start_time))
def on_error(ws, error):
print(error)
def on_close(ws):
print("### closed ###")
def on_open(ws):
print("### connected ###")
if name == "main":
ws = websocket.WebSocketApp("wss://www.example.com/test",
on_message = on_message,
on_error = on_error,
on_close = on_close)
ws.on_open = on_open
ws.run_forever()
Tishka17
Зачем loop.close?
Alex
Оно не влияет что с ним что без
Tishka17
Убери из go_http вообще работу с лупом
Alex
Закоментировал #loop = asyncio.get_event_loop()
Alex
а тут как ? :
Alex
async with aiohttp.ClientSession(loop=loop) as session:
Alex
,
Alex
?
Kop
Tishka17
Kop
Alex
async def go_https():
#loop = asyncio.get_event_loop()
#print("https ",loop)
#async with aiohttp.ClientSession(loop=loop) as session:
content = await fetch_page(session, 'https://www.binance.com/api/v1/depth?symbol=BTCUSDT&limit=1000')
print("https ",content)
#loop.close()
#session.close()
#go_https()
Kop
А кошельков около тысячи. Когда было меньше 500 или до 100 все ещё хоть куда-то шло и работало
Alex
session то пустая ?
Alex
Worlak2, арбитражиш ? ;)
Tishka17
Alex
Как это сделать ?
Alex
уже путаница пошл
Tishka17
Как это сделать ?
https://docs.aiohttp.org/en/stable/client_reference.html как тут
Tishka17
Вообще, похоже сессию надо один раз создать
Tishka17
И потом везде юзать
Anonymous
Што ты там на андройде отлаживаешь
Anonymous
А через что?
Tishka17
Anonymous
Pydroid
Почему именно это? Другое пробовал што?
Tishka17
Хз, он работает
Tishka17
что-то другое пробовал - криво как-то
Bulat
Ребята всем привет. как это понять:
re.findall(r"((?:\d{3}|\(\d{3}\))?(?:\s|-|\.)?\d{3}(?:\s|-|\.)\d{4})",s)
он ищет (произвольный знак) + три цифры + три цифры .... вообще не понимаю
Anonymous
Tishka17
Bulat
Bulat
не серьезно
Alex
Конструкция завелась
Alex
async def fetch(client):
async with client.get('https://www.binance.com/api/v1/depth?symbol=BTCUSDT&limit=1000') as resp:
assert resp.status == 200
return await resp.text()
def on_message(ws, message):
start_time = time.time()
print("WSS: ",ws)
async def go_https():
async with aiohttp.ClientSession() as client:
html = await fetch(client)
print("HTTPS: ")
asyncio.run(go_https())
Alex
Но
Alex
WSS: <websocket._app.WebSocketApp object at 0x00000000024FBF28>
HTTPS:
--- 0.40702342987060547 seconds ---
Tishka17
а html?
Alex
Выполняется оно за 0,44 секунды ровно так же как и в линейном режиме!
Alex
html переменная с содержимым
Alex
все с ней впорядке
Alex
Код выполняется так же долго как тупо через реквестс делать
Alex
я в шоке столько ебли и результат 0
Tishka17
наверно
Tishka17
хотя хз в каком потоке луп работает
Kirill
я в шоке столько ебли и результат 0
А чего ты ожидал с такой писаниной? Ты в синхронной функции on_message() запускаешь луп и ждёшь пока выполнится один HTTP запрос, после чего вырубаешь луп и выходишь из on_message(). В каком месте тут должно стать быстрее, где тут параллельность?
Tishka17
надо асинхзронные вебсокеты взять