

Andrey
22.07.2019
11:42:02
Так, ребята, коллеги, я совсем запутался в проекте. Нужен свежий взгляд на архитектуру.
Пользователь вводит несколько полей данных. Поля сразу кладутся в базу.
Есть несколько парсеров. Парсеры в отдельных модулях. Парсеры синхронные. Код их запускающий - асинхронный.
Парсеры принимают на вход одно поле из базы и некоторые из них принимают ещё дополнительные поля из других таблиц. В ответ выдают другие поля, из пераой таблицы. Задача - по нескольким полям от юзера спарсить сколько возможно данных на заполнение таблицы и потом юзеру все отдать.
По первоначальным данным получаем другие, и их снова нужно в другие парсеры загонять как входные. И так пока таблица не заполнится насколько возможно.
Делаю так - все первоначальные поля кладу в словарь, запускаю цикл while, пока словарь не пустой - беру из него по очереди все поля, отдаю во все парсеры что его принимают, удаляю поле из словаря. Если возвращенные парсерами поля в словаре ещё не присутствуют, добавляю их туда. Парсеры запускаю через run_in_executor. Проблема в том, что некоторым из парсеров нужны доп.данные из базы, из других таблиц, и я не знаю как в этом цикле их туда пробрасывать.
Еще - данные в возвращенных полях могут не совпадать от разных парсеров и с теми, что уже лежат в входных данных, т.е не уникальные значения. Нужно писать в связанные с основной таблицы, записывать все. Пока что ничего не получается из этой схемы построить.
а можно поконкретнее? зачем так сложно всё?
и картинка бы не помешала


Whore Amazing
22.07.2019
11:42:22

Google

Tishka17
22.07.2019
11:42:32
1. Если у тебя данные не изменяются незаивисмо, тебе не обязательно их хранить в разных таблицах
2. Почему бы к каждому парсеру не привязать специальный метод-читатель из БД?
То есть 1.: можешь хоть блобом хранить, если это цельная часть по которы не будет ни поиска, на частичных апдейтов

Whore Amazing
22.07.2019
11:43:50

Tishka17
22.07.2019
11:44:44
def do(parser, loader):
connection = poll.get_connection()
data = loader(connection)
return parser(data)

Whore Amazing
22.07.2019
11:45:39

polunin.ai???
22.07.2019
11:45:43

Whore Amazing
22.07.2019
11:46:17

87776
22.07.2019
11:46:45

Alex
22.07.2019
11:47:28
код заливать не нужно

Whore Amazing
22.07.2019
11:48:22

Google

Tishka17
22.07.2019
11:48:59

Whore Amazing
22.07.2019
11:49:20

Tishka17
22.07.2019
11:49:24
в смысле?
пусть в базе будут только новые
ну или условие сделай какое-то

Whore Amazing
22.07.2019
11:50:01
Так старые тоже нужно хранить, отдавать же все нужно.

Tishka17
22.07.2019
11:50:06
SELECT * from TASKS WHERE not is_finished LIMIT 1

Whore Amazing
22.07.2019
11:50:37
То есть хранить ещё и задачи в базе?

Tishka17
22.07.2019
11:50:43
блин
я без понятия что у тебя там уже хранится

87776
22.07.2019
11:51:07

Tishka17
22.07.2019
11:51:07
звучало как будто у тебя в БД есть задачи с доп.данными

Whore Amazing
22.07.2019
11:51:47

Tishka17
22.07.2019
11:52:02
задачи, данные.. какая разница?
если эти данные которые надо распарсить - это уже задача

StaSeo
22.07.2019
11:52:34
Всем привет, кто знает быстрый, мощный парсер данных с сайтов? Или, подскажите способ быстро собрать нужные URL сайтов. Нужно быстрее чем типа софтом ScreamingFrog

Alex
22.07.2019
11:54:03
1) это не ответ на вопрос как
конкретно в случае тревиса это звисит от провайдера. код заливать он тоже умеет.
но в общем случае нормальные люди собирают билд артефакты и деплоят их.

Whore Amazing
22.07.2019
11:54:24
Вот у меня есть входные данные - поле "номер".
По этому полю парсер может выдать поле "имя".
По нему - поле "сайт".
По полю "сайт" снова может в числе прочей информации выдать "номер", но уже с другим значением. Его тоже нужно записать и по нему ещё раз все пройти...

Shieldy
22.07.2019
11:54:55
Добро пожаловать, @Gidae0505!
Не забудь ознакомиться с правилами чата.
https://t.me/ru_python/802295

Google

Whore Amazing
22.07.2019
11:55:44
И так пока новых уникальных данных не останется.

Pavel
22.07.2019
11:56:23
ты базу знаний какую-то строишь, что ли?

Whore Amazing
22.07.2019
11:56:27
Да
И сроки поджимают, уже парсеры надо вовсю писать, а я застрял на этом раскидывателе данных по ним
И не соображаю уже ничерта


Илья
22.07.2019
11:58:37
Так, ребята, коллеги, я совсем запутался в проекте. Нужен свежий взгляд на архитектуру.
Пользователь вводит несколько полей данных. Поля сразу кладутся в базу.
Есть несколько парсеров. Парсеры в отдельных модулях. Парсеры синхронные. Код их запускающий - асинхронный.
Парсеры принимают на вход одно поле из базы и некоторые из них принимают ещё дополнительные поля из других таблиц. В ответ выдают другие поля, из пераой таблицы. Задача - по нескольким полям от юзера спарсить сколько возможно данных на заполнение таблицы и потом юзеру все отдать.
По первоначальным данным получаем другие, и их снова нужно в другие парсеры загонять как входные. И так пока таблица не заполнится насколько возможно.
Делаю так - все первоначальные поля кладу в словарь, запускаю цикл while, пока словарь не пустой - беру из него по очереди все поля, отдаю во все парсеры что его принимают, удаляю поле из словаря. Если возвращенные парсерами поля в словаре ещё не присутствуют, добавляю их туда. Парсеры запускаю через run_in_executor. Проблема в том, что некоторым из парсеров нужны доп.данные из базы, из других таблиц, и я не знаю как в этом цикле их туда пробрасывать.
Еще - данные в возвращенных полях могут не совпадать от разных парсеров и с теми, что уже лежат в входных данных, т.е не уникальные значения. Нужно писать в связанные с основной таблицы, записывать все. Пока что ничего не получается из этой схемы построить.
Схемы! Дайте схемы!


foxfix
22.07.2019
11:58:46
Кто работал с hasura? Стек flask, react, graphql, postgreql. Если не ошибаюсь, hasura позволяет сразу делать graphql запросы напрямую в бд без посредников в виде бека? Нужен ли ендпойнт на фласке для graphql или с hasura можно обойтись без него?

Whore Amazing
22.07.2019
11:58:58
Сейчас попробую нарисовать схему

Илья
22.07.2019
11:59:10

Pavel
22.07.2019
11:59:12

Андрей
22.07.2019
11:59:17

Какого Бля
22.07.2019
12:03:43

Pavel
22.07.2019
12:05:38
"хасура графкуель" написана на хаскеле. удачи в отладке, в случае чего.

foxfix
22.07.2019
12:06:33

Dmitry
22.07.2019
12:07:18

Какого Бля
22.07.2019
12:07:24
что я пропустил? разве графу нужны эндпоинты?

Tishka17
22.07.2019
12:07:28

Какого Бля
22.07.2019
12:07:55
разве графу не нужен бек, который принимает граф обьект, парсит его и создает запрос?
куда тут эндпоинты?
или вы хотите сказать, что вы объеденили граф с рестом?

Google

Whore Amazing
22.07.2019
12:09:13

Dmitry
22.07.2019
12:09:48

Какого Бля
22.07.2019
12:10:03
или граф объекты передаете через рест?

Whore Amazing
22.07.2019
12:12:58
А как и где тогда данные хранить/писать в базу
Что, парсер сам должен после отработки записать в базу и поставить новую задачу?

olapotnikov
22.07.2019
12:13:00

Whore Amazing
22.07.2019
12:14:33

foxfix
22.07.2019
12:15:07

Какого Бля
22.07.2019
12:16:00
окей, теперь еще раз вопрос
?

foxfix
22.07.2019
12:16:06
Походу, пока описывала, уже поняла ) спасибо

Какого Бля
22.07.2019
12:16:50
зачем тут hasura ?♂️
у вас бек на питоне

foxfix
22.07.2019
12:18:57
зачем тут hasura ?♂️
Hasura будет. Это есть в архитектуре, потому и хотела сама понять к чему она? Ибо не вижу пока куда и как ее применять. Спросить было не у кого ))

Какого Бля
22.07.2019
12:19:55
получается, вместо того, чтобы общаться вот так graphql -> graphne -> python -> db
вы хотите куда то в эту цепочку воткнуть еще либу написанную на хаскеле

Pavel
22.07.2019
12:19:59

Tishka17
22.07.2019
12:20:17

foxfix
22.07.2019
12:20:18

Какого Бля
22.07.2019
12:20:35

Google

Whore Amazing
22.07.2019
12:20:43

Tishka17
22.07.2019
12:20:58
я откуда знаю

Whore Amazing
22.07.2019
12:22:06
там же где и ставишь
А что с новыми данными? Я сейчас ставлю один раз на входные
А выходные-то потом тоже нужно прогнать, а нам неизвестно ещё когда и что там придёт

Какого Бля
22.07.2019
12:22:36
но это не панацея
и то
кто вообще пишет бек веба на хаскеле

Whore Amazing
22.07.2019
12:23:12
Теперь у меня ощущение что все понимают что надо делать и только один я нет

Tishka17
22.07.2019
12:23:24

Whore Amazing
22.07.2019
12:23:48
Я кретин
Ничего не соображаю

Tishka17
22.07.2019
12:25:37
Insert

Какого Бля
22.07.2019
12:25:50
https://proglib.io/p/web-frameworks-2019/
на третьем месте рельсы. лол, кто то еще пишет на рубях?

Whore Amazing
22.07.2019
12:26:36
Insert
То есть данные будут писаться только в таблицу тасков?

Tishka17
22.07.2019
12:26:51