@ru_python

Страница 7216 из 9768
Alex
29.11.2018
12:37:25
сюда явно просится параллельный разбор файлов, потоковый (streaming) и простая стейтмашина.

Марк
29.11.2018
12:38:13
А если сервак нагружен?

Tishka17
29.11.2018
12:38:30
ну в целом задача в таком виде конечно грепом не решится

Google
Tishka17
29.11.2018
12:39:58
я бы предложил читать чанками и сплитить их

Евгений
29.11.2018
12:40:01
ну если все равно регексом пользуется, и все равно вычитвает файл в память - почему сразу через регулярку не описать блок (вместе с =+)

Tishka17
29.11.2018
12:41:17
if ttx in block and session_action_str in block and ra_message in block and re.findall(user_name, block): давайте больше проходов по строке

Евгений
29.11.2018
12:41:25
тип одна большая регулярка на блок инфу в логе?
ну я не думаю что она сильно большая будет, если правильно отделить зерна от плевел

Tishka17
29.11.2018
12:41:49
давай пример лога и формат

Iliya
29.11.2018
12:42:27
if ttx in block and session_action_str in block and ra_message in block and re.findall(user_name, block): давайте больше проходов по строке
это как раз выбираются блоки в логе, в которых есть нужные мне строки

Евгений
29.11.2018
12:42:33
но я б отталкивался от устройства блока, и того, насколько много данных у тебя в результате в среднем "выжывает"

Tishka17
29.11.2018
12:43:09
это как раз выбираются блоки в логе, в которых есть нужные мне строки
ты уверен, что корректно парсишь? неуцжели порядок полей не фиксирвоан?

у тебя если вдруг ttx встретится в тексте сообщения, он тоже сработает

Iliya
29.11.2018
12:44:25
но я б отталкивался от устройства блока, и того, насколько много данных у тебя в результате в среднем "выжывает"
я считал, когда делал именно парсер В среднем в одном логе 20к блоков С инфой 80, с удовлетвотворяющей инфой 10

Tishka17
29.11.2018
12:46:22
ну да

Google
Евгений
29.11.2018
12:46:27
учитывая что тебе нужна некоторая инфа из блока исходя из других данных этого блока, то лучше парсить линейно файл, набирая буфер, и стейтмшина, да

Tishka17
29.11.2018
12:46:28
в текстовой части лога

не в служебной

Iliya
29.11.2018
12:46:49
то это как раз маркер, что блок подходит под одно условие

Tishka17
29.11.2018
12:47:06
обычно лог содержит служебные поля типа время, уровень логирования… и текст

если в тексте будет кусок подходящий по формату под служебные поля, он все равно текст

Iliya
29.11.2018
12:47:37
обычно лог содержит служебные поля типа время, уровень логирования… и текст
У меня все поля в блоке т.е. в каждом блоке есть время и тд

Tishka17
29.11.2018
12:47:47
да покажи уже лог

Iliya
29.11.2018
12:48:12
да покажи уже лог
ок, сейчас закину, минуту

Tishka17
29.11.2018
12:48:37
выгялдит как будто у тебя лог бывает 12.12.2018 User блаблабла а иногда блаблабла User 12.12.2018

ну грубо

и тебе надо все распарсить

я даже не знаю каким п***сом надо быть чтобы так логи писать

Марк
29.11.2018
12:49:45
сплитом

Iliya
29.11.2018
12:51:49
я даже не знаю каким п***сом надо быть чтобы так логи писать
этот девайс пишит вообще весь лог,вообще все, т.е. кучу всякого ненужного говна, зачем не знаю, но кому-то это надо

Alex
29.11.2018
12:54:07
логи в студию

Iliya
29.11.2018
12:54:50
в процессе выпиливани лишней инфы и замены ее 000 :)

Tishka17
29.11.2018
12:55:30
только формат созрани

Iliya
29.11.2018
12:55:40
Tishka17
29.11.2018
12:56:22
десятка записей нам достаточно, не надо весь файл

Google
Iliya
29.11.2018
12:58:44
десятка записей нам достаточно, не надо весь файл
естествнно :) Я кину один блок, который подходит под все условия

rasonbot
29.11.2018
12:59:09
как вывести инстанс класса в глобал скоуп?

Проксимов
29.11.2018
13:00:04
rasonbot
29.11.2018
13:00:14
?
он создается в функции

Alex
29.11.2018
13:01:55
он создается в функции
вредный совет: global foo foo = ...

rasonbot
29.11.2018
13:02:21
вредный совет: global foo foo = ...
неправильный ответ, осталось 5 попыток

Проксимов
29.11.2018
13:02:27
Alex
29.11.2018
13:02:44
щито?

rasonbot
29.11.2018
13:03:00
Зочем
надо, делаю CLI клиент для одной сети

Alex
29.11.2018
13:04:10
ну с большой вероятностью ты делаешь что-то неправильно, если тебе понадобился глобальный инстанс.

Iliya
29.11.2018
13:05:32
Это блок лога, там условия по которым я цепляюсь и забираю именно USER-NAME

Проксимов
29.11.2018
13:07:23
https://pastebin.com/AGrdh0VH
Регулярочкой

По имени просто находишь и всё

Iliya
29.11.2018
13:09:08
Регулярочкой
так и делаю нюансов много, Блок должен удовлетворять трем условиям И только тогда я беру из этого блока юзернейм регуляркой

Tishka17
29.11.2018
13:10:14
Google
Tishka17
29.11.2018
13:11:01
блин, у тебя же все по строкам

ddd
29.11.2018
13:11:01
подправил условия задачи, http://dpaste.com/1PDV4XP
Слууушай. Откажись от глобалок и всё получится

Марк
29.11.2018
13:11:12
Ой, чет все это какая-то херня

Iliya
29.11.2018
13:11:21
кинь который не проходит тоже
Там все тоже, только в session action = УСЛОВИЕ_1 domainId = УСЛОВИЕ_2 не те значения что надо и username другой другого типа

Admin
ERROR: S client not available

Iliya
29.11.2018
13:15:47
Условия то какие?
определенные значения в session action = УСЛОВИЕ_1 domainId = УСЛОВИЕ_2 если то что мне нужно, то этот блок подходит и из него я беру user-name

Sfy
29.11.2018
13:16:25
Вопрос такой. Модификатор global надо стараться вообще не использовать? Это табу как goto в Си в плане защиты от создания лапшичного говнокода?

Iliya
29.11.2018
13:17:05
Сплить на блоки и регуляркой чекай условия
именно это я и делаю :) глянь выше все описывал, только проблема в том, что логи за 18 мин обрабатываются 90сек, что полный ппц

Sfy
29.11.2018
13:17:59
Тип того. global нужен оооочень редко
This has nothing to do with Python; global variables are bad in any programming language. However, global constants are not conceptually the same as global variables; global constants are perfectly fine to use. It's just that in Python there is no syntactic difference.

Нашёл такой взгляд.

Iliya
29.11.2018
13:18:10
Ок, сорян. Ток пришёл
:) я там выше даже сего код кидал обрабатывающий, там танцев хватает :) Логи в архиве по папкам и тд :)

Sfy
29.11.2018
13:18:16
Действительно, в Питоне ведь нет define.

rasonbot
29.11.2018
13:18:49
вы так и не сказали как глобализовать обьект

Google
Iliya
29.11.2018
13:19:13
вы так и не сказали как глобализовать обьект
было выше :) глобальные переменные - это плохо

Andrew
29.11.2018
13:19:14
пример
Помощь ещё нужна?

Тимур
29.11.2018
13:19:23
вы так и не сказали как глобализовать обьект
Я не читал выше сообщения. Но глобальные штуки вред. Как переменные, объекты и тд

rasonbot
29.11.2018
13:19:56
ну а как мне использовать переменную из одной функции в другой

Sfy
29.11.2018
13:21:15
Составьте список табу в коде, на ваш взгляд. Нечто, что диспропорционально повышает риск говна. Я пока выделил: 1. from module import * 2. global 3. голый except 4. Лямбды, кроме редких случаев

Сергей
29.11.2018
13:21:48
ну а как мне использовать переменную из одной функции в другой
Переменные можно передавать и возвращать

Aragaer
29.11.2018
13:22:12
global можно в прототипе, пока не сделал класс

Проксимов
29.11.2018
13:22:25
Переменные можно передавать и возвращать
Можно просто брать из глобал скоупа

Aragaer
29.11.2018
13:22:55
голый эксепт это нехорошо, надо как минимум логирование .... но иногда бывает. Например StopIteration - вполне ожидаемый

Тимур
29.11.2018
13:23:42
global можно в прототипе, пока не сделал класс
Лучше вообще не делать. Всегда можно обойтись без них.

Tishka17
29.11.2018
13:23:45
елси прям говнокодить

Sfy
29.11.2018
13:24:15
Что не так с лямбдами?
https://python-scripts.com/no-lambda Прочитал вот эту статью и обдумал. Тут вроде всё складно изложено на этот счёт. Нет, лямбды не табу, но они однозначно дают лапшу, как побочку от своей компактности и анонимности.

Тимур
29.11.2018
13:24:30
а если нужен KeyboardInterrupt?
А что с ним не так? Все дело в логике, которую создашь.

Iliya
29.11.2018
13:24:48
http://codephoto.ru/i/iZePu
А как на счет текста :) Я еще не дочитал

Страница 7216 из 9768