âDêšwu öBipci
То есть 1.: можешь хоть блобом хранить, если это цельная часть по которы не будет ни поиска, на частичных апдейтов
Поиск будет, в том и ещё одна проблема, по всем неуникальным наборам данных нужно все парсеры прогнать.
Tishka17
def do(parser, loader): connection = poll.get_connection() data = loader(connection) return parser(data)
Dmytro
поч data[key] = value работает быстрее метода data.update({key: value}) ? Встроенные методы я думал быстрее
Для вызова метода .update() нужно его вызвать. То есть положить на стек, потом его снять. А в первом случае такого делать не нужно.
âDêšwu öBipci
Avonar
сегодня уже даже травис умеет в деплоймент
Ну и как он заливает свежий код ?)
Alex
Ну и как он заливает свежий код ?)
фундаментальная ошибка - заливает код
Alex
код заливать не нужно
âDêšwu öBipci
def do(parser, loader): connection = poll.get_connection() data = loader(connection) return parser(data)
То есть входные данные сразу из базы брать? Как тогда выяснить, нужно ли ещё раз запускать парсер (ergo появились ли новые данные в базе)?
Tishka17
И здесь мне тоже ничего не понятно...
в смысле? во тфункция которая читает из БД и вызывает парсер
âDêšwu öBipci
в смысле? во тфункция которая читает из БД и вызывает парсер
Так неизвестно, старые это данные или новые, которые ещё не отработаны...
Tishka17
в смысле?
Tishka17
пусть в базе будут только новые
Tishka17
ну или условие сделай какое-то
âDêšwu öBipci
Так старые тоже нужно хранить, отдавать же все нужно.
Tishka17
SELECT * from TASKS WHERE not is_finished LIMIT 1
âDêšwu öBipci
То есть хранить ещё и задачи в базе?
Tishka17
блин
Tishka17
я без понятия что у тебя там уже хранится
âDêšwu öBipci
Avonar
код заливать не нужно
1) это не ответ на вопрос как
Tishka17
звучало как будто у тебя в БД есть задачи с доп.данными
âDêšwu öBipci
звучало как будто у тебя в БД есть задачи с доп.данными
Не задачи. Только данные. И они по мере работы парсеров пополняются. Сейчас пример напишу.
Tishka17
задачи, данные.. какая разница?
Tishka17
если эти данные которые надо распарсить - это уже задача
—𝕤𝓉𝒶𝕤—
Всем привет, кто знает быстрый, мощный парсер данных с сайтов? Или, подскажите способ быстро собрать нужные URL сайтов. Нужно быстрее чем типа софтом ScreamingFrog
Alex
1) это не ответ на вопрос как
конкретно в случае тревиса это звисит от провайдера. код заливать он тоже умеет. но в общем случае нормальные люди собирают билд артефакты и деплоят их.
âDêšwu öBipci
Вот у меня есть входные данные - поле "номер". По этому полю парсер может выдать поле "имя". По нему - поле "сайт". По полю "сайт" снова может в числе прочей информации выдать "номер", но уже с другим значением. Его тоже нужно записать и по нему ещё раз все пройти...
âDêšwu öBipci
И так пока новых уникальных данных не останется.
Pavel
ты базу знаний какую-то строишь, что ли?
âDêšwu öBipci
Да
âDêšwu öBipci
И сроки поджимают, уже парсеры надо вовсю писать, а я застрял на этом раскидывателе данных по ним
âDêšwu öBipci
И не соображаю уже ничерта
Yar
Так, ребята, коллеги, я совсем запутался в проекте. Нужен свежий взгляд на архитектуру. Пользователь вводит несколько полей данных. Поля сразу кладутся в базу. Есть несколько парсеров. Парсеры в отдельных модулях. Парсеры синхронные. Код их запускающий - асинхронный. Парсеры принимают на вход одно поле из базы и некоторые из них принимают ещё дополнительные поля из других таблиц. В ответ выдают другие поля, из пераой таблицы. Задача - по нескольким полям от юзера спарсить сколько возможно данных на заполнение таблицы и потом юзеру все отдать. По первоначальным данным получаем другие, и их снова нужно в другие парсеры загонять как входные. И так пока таблица не заполнится насколько возможно. Делаю так - все первоначальные поля кладу в словарь, запускаю цикл while, пока словарь не пустой - беру из него по очереди все поля, отдаю во все парсеры что его принимают, удаляю поле из словаря. Если возвращенные парсерами поля в словаре ещё не присутствуют, добавляю их туда. Парсеры запускаю через run_in_executor. Проблема в том, что некоторым из парсеров нужны доп.данные из базы, из других таблиц, и я не знаю как в этом цикле их туда пробрасывать. Еще - данные в возвращенных полях могут не совпадать от разных парсеров и с теми, что уже лежат в входных данных, т.е не уникальные значения. Нужно писать в связанные с основной таблицы, записывать все. Пока что ничего не получается из этой схемы построить.
Схемы! Дайте схемы!
foxfix
Кто работал с hasura? Стек flask, react, graphql, postgreql. Если не ошибаюсь, hasura позволяет сразу делать graphql запросы напрямую в бд без посредников в виде бека? Нужен ли ендпойнт на фласке для graphql или с hasura можно обойтись без него?
âDêšwu öBipci
Сейчас попробую нарисовать схему
Pavel
И не соображаю уже ничерта
нарисуй себе граф со всем этим дерьмом, должно стать на пол-чёрта понятнее
Pavel
"хасура графкуель" написана на хаскеле. удачи в отладке, в случае чего.
Vladyslav 🇺🇦🇪🇺
что я пропустил? разве графу нужны эндпоинты?
Vladyslav 🇺🇦🇪🇺
разве графу не нужен бек, который принимает граф обьект, парсит его и создает запрос?
Vladyslav 🇺🇦🇪🇺
куда тут эндпоинты?
Vladyslav 🇺🇦🇪🇺
или вы хотите сказать, что вы объеденили граф с рестом?
Vladyslav 🇺🇦🇪🇺
Негодяи
? зачем юзать и то и то
Vladyslav 🇺🇦🇪🇺
или граф объекты передаете через рест?
âDêšwu öBipci
А как и где тогда данные хранить/писать в базу Что, парсер сам должен после отработки записать в базу и поставить новую задачу?
olapotnikov
Какое невежество. Ну можно же почитать мануал о работе с гитом
Я вопрос задавал для того чтобы узнать пользовательский опыт работы людей тут с редакторами и гитхабом. А не ради вашего вот этого вот обмена мнениями. Не интересует, удачи
foxfix
что я пропустил? разве графу нужны эндпоинты?
Не ендпойнт, сори мистейк) с помощью graphene либы на фласке делается схема с сущностями. Модели превращают в объекты graphql.
Vladyslav 🇺🇦🇪🇺
окей, теперь еще раз вопрос
Vladyslav 🇺🇦🇪🇺
?
foxfix
Походу, пока описывала, уже поняла ) спасибо
Vladyslav 🇺🇦🇪🇺
зачем тут hasura 🤷‍♂️
Vladyslav 🇺🇦🇪🇺
у вас бек на питоне
foxfix
зачем тут hasura 🤷‍♂️
Hasura будет. Это есть в архитектуре, потому и хотела сама понять к чему она? Ибо не вижу пока куда и как ее применять. Спросить было не у кого ))
Vladyslav 🇺🇦🇪🇺
получается, вместо того, чтобы общаться вот так graphql -> graphne -> python -> db вы хотите куда то в эту цепочку воткнуть еще либу написанную на хаскеле
Pavel
Hasura будет. Это есть в архитектуре, потому и хотела сама понять к чему она? Ибо не вижу пока куда и как ее применять. Спросить было не у кого ))
как оно в архитектуру попало? человек, «который рисует квадратики», прочитал хайповую статью?
Tishka17
@Tishka17 спасай Я все ещё не понимаю твоего предложения
таблица: id, данные таска, результат периодически читаем у кого нет результата и запускаем пареры парсер по азвершению пишет флаг что есть результат и куда надо сохраняет данные
Vladyslav 🇺🇦🇪🇺
Не ко мне )))
передайте архитектору привет
Tishka17
А ставить задачи где и когда?
там же где и ставишь
Tishka17
я откуда знаю
âDêšwu öBipci
там же где и ставишь
А что с новыми данными? Я сейчас ставлю один раз на входные А выходные-то потом тоже нужно прогнать, а нам неизвестно ещё когда и что там придёт
Vladyslav 🇺🇦🇪🇺
передайте архитектору привет
я думаю hasura создана для тех, у кого весь бек на хаскеле
Vladyslav 🇺🇦🇪🇺
но это не панацея
Vladyslav 🇺🇦🇪🇺
и то
Vladyslav 🇺🇦🇪🇺
кто вообще пишет бек веба на хаскеле
âDêšwu öBipci
Теперь у меня ощущение что все понимают что надо делать и только один я нет