Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix data synchronization with Github #213

Open
acidmaksim opened this issue Dec 16, 2022 · 14 comments
Open

Fix data synchronization with Github #213

acidmaksim opened this issue Dec 16, 2022 · 14 comments
Labels
bug Something isn't working help wanted Extra attention is needed

Comments

@acidmaksim
Copy link
Contributor

Ожидаемое поведение

We need to synchronize data with Github for students who were already registered in the service and for new people

Текущее поведение

Now if you look at the statistics of users, not everyone pulls up all the information

@acidmaksim acidmaksim added bug Something isn't working help wanted Extra attention is needed labels Dec 16, 2022
@Tragoedie
Copy link
Contributor

Попробую разобраться

@BoCXoD-man
Copy link

Ну и я попробую разобраться =)

@fey
Copy link
Collaborator

fey commented Jul 26, 2023

Здесь нужно Добавить пользователю интерфейс, чтобы он мог нажать кнопку и загрузить данные о себе. Т.е. например щас у меня нет свежих данных за июнь, июлю. Я должен где-то нажать кнопку и загрузить свою статистику.

@BoCXoD-man
Copy link

Стало более понятней, но пока взял задачу полегче, от этой откажусь.

@DmGorokhov
Copy link
Contributor

@fey Привет! Я все присматриваюсь к этой и похожей смежной задачей. Концептуально не пойму, по какому принципу идет наполнение БД? Получается, что с момента моей регистрации в friends статистика не обновляется. Получается пока что нет никакого механизма(сигналы или очереди задач по расписанию) обновления данных по проектам? Допустим мы добавим кнопку "Обновить мою статистику". Тогда я смогу обновлять свой профиль вручную- параллельно пускай это в БД летит. Но если пользователи не заходят и не обновляют свои профили, то общая статистика по-сути будет всегда устаревшей.

@fey
Copy link
Collaborator

fey commented Dec 19, 2023

@DmGorokhov да, сейчас только автоматом происходит и только по добавленным репозиториям.
Я не знаю, как щас в точности логика работает, но раньше все строилось вокруг репозиториев. Если репо есть в нашем списке (базе), то инфа от него будет забираться по крону через апи.
А есть еще юзеры. которые давно регались и не всех их вклады были учтены - тк изначально базу вели по проектам Хекслета.
Поэтому нужен какой-то хук следить за активностью юзера. Либо хотя бы обновить список реп, в которых он участвовал

@DmGorokhov
Copy link
Contributor

Тогда может начать с простого:
1.) Добавляем кнопку юзеру, он ее жмакает- и стягивает свои же данные со своего GH в табличку.
Тут хотел уточнить- мы же на friends стягиваем все доступное по юзеру? Т.е. все мои репозитории (не только по Хекслету) пускай подтягиваются?
Не будет ли тут дублирования задачи с этим #323 ишью? Человек вроде еще делает.

2.) После п.1 можно добавить сигнальчик или что-то подобное- чтобы еще и в базу улетело. Но тогда база будет уже не по Хекслету, по-сути, а по всем юзерам с их данными.

3.) После пп.1 и 2 можно подумать как хук добавить по действиям пользователей.

@fey
Copy link
Collaborator

fey commented Dec 19, 2023

  1. Да, для начала идеально кнопкой подтягивать данные. Точне енажимаем - и у нас запускается джоба где-то на фоне.
    Да, все публичные данные по пользователю. Задумка такая, что hexlet-friends будет служить витриной достижений.
    Я не думаю, что там бвдет дублироваться. Учитывая, что задачу взяли в ноябре и не сделали пулл реквеста (скорее всего уже не работают над задачей).
  2. Да, любой юзер может у нас во френдс зарегаться и его активность будет к нам улетать.

Задачу можно итеративно делать. Сперва ручной режим, потом автоматический.

@DmGorokhov
Copy link
Contributor

Хотел еще пару деталей уточнить:
1.) Не совсем понял, что вы под джобой имеете ввиду? Сохранение в БД? Нам ведь все равно придется перерендерить шаблон после обновления. Можем просто имеено в базу идти после рендера фоновой задачей (допустим через Celery). Но меня смущает тогда, что если ошибка базы будет, то в след. раз пользователь увидит старые данные все равно. Т.е. не будет unit of work

2.) Кнопку делаем обещдоступной, верно? Любой же может запросить обновление, тут секретов нет

3.) Предлагаю попробовать начать использовать библиотеку PyGithub для общения с апи гитхаба. Это даст слой абстракции, сама либа релизиться регулярно, тесты 93%, звезд тоже хватает.

@fey
Copy link
Collaborator

fey commented Dec 21, 2023

Подобные задачи, типа синхронизации данных редко выполняются реалтайм. Обычно их запускают где-то на фоне в очереди и она выполняются.
У каждого пользователя своя кнопка. Он синхронизирует свои данные.

  1. Ничего не имею против =) Но кажется щас уже что-то есть для общения с гитхабом.

@DmGorokhov
Copy link
Contributor

Ок, я поразбираюсь, как лучше сделать.

@DmGorokhov
Copy link
Contributor

после праздников продолжу заниматься этой задачей

@fey
Copy link
Collaborator

fey commented Mar 4, 2024

Так ну синхронизация все еще не работает толком :(

@DmGorokhov
Copy link
Contributor

ну я пока и не сделал( Нашел наконец первую работу и пока не хватает времени вернуться к этой задаче. Задача интересная сама по себе и я про нее помню! Если найдутся желающие- welcome.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working help wanted Extra attention is needed
Projects
Status: No status
Development

No branches or pull requests

5 participants