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

Евгений
29.11.2018
12:37:56

Марк
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
ну если все равно регексом пользуется, и все равно вычитвает файл в память - почему сразу через регулярку не описать блок (вместе с =+)

Iliya
29.11.2018
12:41:00

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

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

Tishka17
29.11.2018
12:43:09
у тебя если вдруг ttx встретится в тексте сообщения, он тоже сработает

Iliya
29.11.2018
12:44:25

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
как вывести инстанс класса в глобал скоуп?

Alex
29.11.2018
12:59:33

Проксимов
29.11.2018
13:00:04

rasonbot
29.11.2018
13:00:14

Alex
29.11.2018
13:01:55

rasonbot
29.11.2018
13:02:21

Проксимов
29.11.2018
13:02:27

Alex
29.11.2018
13:02:44
щито?

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

Ssi
29.11.2018
13:03:23

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

Iliya
29.11.2018
13:04:30

Alex
29.11.2018
13:04:35

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

Проксимов
29.11.2018
13:07:23
По имени просто находишь и всё

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

Проксимов
29.11.2018
13:09:42

Tishka17
29.11.2018
13:10:14

Google

Проксимов
29.11.2018
13:10:34

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

ddd
29.11.2018
13:11:01

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

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

ddd
29.11.2018
13:13:30

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 в Си в плане защиты от создания лапшичного говнокода?

Проксимов
29.11.2018
13:16:34

Iliya
29.11.2018
13:17:05

Проксимов
29.11.2018
13:17:20

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

Проксимов
29.11.2018
13:19:02

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:45

Сергей
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 - вполне ожидаемый

Tishka17
29.11.2018
13:23:32

Тимур
29.11.2018
13:23:42

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

rasonbot
29.11.2018
13:23:49

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

Тимур
29.11.2018
13:24:30

Iliya
29.11.2018
13:24:48

ddd
29.11.2018
13:24:58