@ru_python

Страница 9668 из 9768
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
1. Если у тебя данные не изменяются незаивисмо, тебе не обязательно их хранить в разных таблицах 2. Почему бы к каждому парсеру не привязать специальный метод-читатель из БД?
1. Потому что данные не уникальны, грубо говоря одна запись в таблице может требовать сколько угодно одинаковых полей данных одного типа. 2. Как их тогда запускать?

То есть 1.: можешь хоть блобом хранить, если это цельная часть по которы не будет ни поиска, на частичных апдейтов
Поиск будет, в том и ещё одна проблема, по всем неуникальным наборам данных нужно все парсеры прогнать.

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
поч data[key] = value работает быстрее метода data.update({key: value}) ? Встроенные методы я думал быстрее
Для вызова метода .update() нужно его вызвать. То есть положить на стек, потом его снять. А в первом случае такого делать не нужно.

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
def do(parser, loader): connection = poll.get_connection() data = loader(connection) return parser(data)
То есть входные данные сразу из базы брать? Как тогда выяснить, нужно ли ещё раз запускать парсер (ergo появились ли новые данные в базе)?

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
код заливать не нужно
1) это не ответ на вопрос как

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
Сейчас попробую нарисовать схему

Pavel
22.07.2019
11:59:12
И не соображаю уже ничерта
нарисуй себе граф со всем этим дерьмом, должно стать на пол-чёрта понятнее

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

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

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

куда тут эндпоинты?

или вы хотите сказать, что вы объеденили граф с рестом?

Google
Какого Бля
22.07.2019
12:10:03
Негодяи
? зачем юзать и то и то

или граф объекты передаете через рест?

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

olapotnikov
22.07.2019
12:13:00
Какое невежество. Ну можно же почитать мануал о работе с гитом
Я вопрос задавал для того чтобы узнать пользовательский опыт работы людей тут с редакторами и гитхабом. А не ради вашего вот этого вот обмена мнениями. Не интересует, удачи

foxfix
22.07.2019
12:15:07
что я пропустил? разве графу нужны эндпоинты?
Не ендпойнт, сори мистейк) с помощью graphene либы на фласке делается схема с сущностями. Модели превращают в объекты graphql.

Какого Бля
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
Hasura будет. Это есть в архитектуре, потому и хотела сама понять к чему она? Ибо не вижу пока куда и как ее применять. Спросить было не у кого ))
как оно в архитектуру попало? человек, «который рисует квадратики», прочитал хайповую статью?

Tishka17
22.07.2019
12:20:17
@Tishka17 спасай Я все ещё не понимаю твоего предложения
таблица: id, данные таска, результат периодически читаем у кого нет результата и запускаем пареры парсер по азвершению пишет флаг что есть результат и куда надо сохраняет данные

Какого Бля
22.07.2019
12:20:35
Не ко мне )))
передайте архитектору привет

Google
Tishka17
22.07.2019
12:20:58
А ставить задачи где и когда?
там же где и ставишь

я откуда знаю

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

Какого Бля
22.07.2019
12:22:36
передайте архитектору привет
я думаю hasura создана для тех, у кого весь бек на хаскеле

но это не панацея

и то

кто вообще пишет бек веба на хаскеле

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

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
То есть данные будут писаться только в таблицу тасков?
Данные, которые надо парсить - да. Которые не надо - нет

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