@pydjango

Страница 120 из 1273
Askhat
10.02.2017
09:53:03
Для выборки в базе

И так далее

Типа как Channels

parikLS
10.02.2017
09:53:58
И так далее
sys.path.append

Google
parikLS
10.02.2017
09:54:06
Или както так

Eugene
10.02.2017
09:55:51
sys.path.append('/home/project/www/') os.environ['DJANGO_SETTINGS_MODULE'] = 'projectname.settings' import django.core.wsgi

Askhat
10.02.2017
09:57:26
Я вот Celery листаю, вижу, что он отдельно процессом запускается и дать команду на отложенный вызов у него нет (наверное). Моя задача выглядит так: после того, как сервер обработал POST запрос, клиенту по сокету каждые полчаса должно приходить уведомление

Никита
10.02.2017
09:58:40
ну rq из коробки не умеет в расписание, к нему надо прикрутить хотя бы rq-scheduller

Askhat
10.02.2017
09:59:24


time.sleep (o_O)

Artem
10.02.2017
10:00:06
можно и через сллип, аможно и шедуллер,

ну rq из коробки не умеет в расписание, к нему надо прикрутить хотя бы rq-scheduller
я говорю в целом о rq, да и не особых проблем рядом поставить шедулера

parikLS
10.02.2017
10:01:14
таки целери сильно громоздкое, + за rq

Никита
10.02.2017
10:01:19
никаких проблем, я просто уточнил, чтобы человек сразу нашел, что ему надо)

Askhat
10.02.2017
10:01:25
шедулер вместе запускается?

Google
Никита
10.02.2017
10:01:34
отдельным воркером

Askhat
10.02.2017
10:01:44
А как к нему достучаться?

event'ы?

Artem
10.02.2017
10:01:58
делаешь таску

и коннект к редису

Askhat
10.02.2017
10:03:22
и?

Типа подписку сделать?

Artem
10.02.2017
10:04:02
да, некий обсервер

Askhat
10.02.2017
10:04:08
Мда

А другого чего нибудь нет?

Никита
10.02.2017
10:04:23
не, там не подписка

он же ж работает просто как топор

Artem
10.02.2017
10:04:42
и описываешь обсервейбл, на который вешаешь декоратор job

Askhat
10.02.2017
10:05:18
Мне кажется есть вариант который работает как топор

Никита
10.02.2017
10:05:52
считай через тот же механизм, что и сам rq. ты просто помещаешь таску в очередь, а шедуллер раз в N секунд опрашивает среди своих тасков, какие пора выполнить. если такие есть - он их пропихивает в очередь на выполнение, если они при этом периодические - то добавляет к себе обратно

Askhat
10.02.2017
10:06:30
То есть каким то магическим способом воркер понимает, что у него есть таски?

Artem
10.02.2017
10:06:45
никакой магии, он их видит в редисе

и какие правила выполнения на них

Askhat
10.02.2017
10:07:49
Ну это ты объясняешь наверное, что внутри происходит?

Никита
10.02.2017
10:08:28
https://github.com/ui/rq-scheduler/blob/master/rq_scheduler/scheduler.py#L372

Google
Askhat
10.02.2017
10:09:15
Да, вижу

Понятно, не успел дочитать аргументы воркера

О, у него даже dashboard есть

Спасибо за помощь

Никита
10.02.2017
10:16:48
ну да есть, но практика показывает, что его достаточно для разработчика, но недостаточно для пользователей

Askhat
10.02.2017
10:17:11
Ну это то, что мне нужно

Никита
10.02.2017
10:17:23
есть еще huey , если что, примерно то ж самое)

Askhat
10.02.2017
10:19:40
Я могу его использовать прям в Django процессе?

parikLS
10.02.2017
10:22:08
зачем?

а когда какойто гуникорн или увиски сделает тебе 4 джанго процесса?

Askhat
10.02.2017
10:23:36
Скорее всего я не могу уловить саму суть связки двух процессов

Что rq, чтоhuey описивают как сделать таск из рядом стоящей функции, но если этой функции вообще рядом нет?

parikLS
10.02.2017
10:25:15
в контексте rq связь через редис

Askhat
10.02.2017
10:25:15




Вешается у huey декоратор. Дальше вызывается print_time(). А далее где логику прописывать на отработку этого таска?

Есть процесс, который вызывается n-ое количество раз и выполняет один и тот же алгоритм

Что есть в данном алгоритме?

Описать вызов они описали на 5+

А дальше где метод на прослушку отложенного таска

Google
Никита
10.02.2017
10:28:35
не понял

какую прослушку?

Askhat
10.02.2017
10:28:44
У меня задача такая, что Django должен отдать команду которая скажет - вызови мою функцию через полчаса

Никита
10.02.2017
10:28:48
тебе нужно выполнять таск раз в 30 минут?

Askhat
10.02.2017
10:29:05
Да

Никита
10.02.2017
10:29:07
единожды?

Askhat
10.02.2017
10:29:24
Нет, если клиент увидел то самое уведомление, то надо забыть этот таск

Никита
10.02.2017
10:29:35
from datetime import timedelta # Schedule a job to run 10 minutes, 1 hour and 1 day later scheduler.enqueue_in(timedelta(minutes=10), count_retweets, tweet_id) scheduler.enqueue_in(timedelta(hours=1), count_retweets, tweet_id) scheduler.enqueue_in(timedelta(days=1), count_retweets, tweet_id)

вот прямо из ридми пример

Askhat
10.02.2017
10:30:17
Вот второй аргумент меня удивляет

Никита
10.02.2017
10:30:23
я не могу понять,что именно тебе не понять

Askhat
10.02.2017
10:30:25
count_retweets

Никита
10.02.2017
10:30:31
это функция

которую надо выполнить потом

Askhat
10.02.2017
10:31:08
Верно. Как scheduler в своём процессе поймёт, что есть функция count_retweets?

Если её не существует в его процессе

Есть же воркер как отдельный процесс и есть django как отдельный процесс верно?

parikLS
10.02.2017
10:32:54
а что мешает воркеру заимпортить себе функцию?

Askhat
10.02.2017
10:34:11
В функции содержится отправка данных по WebSocket через Channels

Google
Никита
10.02.2017
10:34:52
ааа

ну

Askhat
10.02.2017
10:34:54
То есть в процессе воркера я не смогу найти нужный мне канал для передачи

Никита
10.02.2017
10:35:03
так там все через picke сериализуется

Askhat
10.02.2017
10:35:10
Херасе

Никита
10.02.2017
10:35:12
*pickle

Askhat
10.02.2017
10:35:13
Как это так

Никита
10.02.2017
10:35:22
ну так

parikLS
10.02.2017
10:35:25
не сериализуется вебсокет через пикл...

Никита
10.02.2017
10:35:32
тпр

Askhat
10.02.2017
10:35:34
Ну я о том же

Никита
10.02.2017
10:35:36
я про scheduler

пардон)

не догнал

Askhat
10.02.2017
10:35:50
То есть видите в чём трабель

Два разных процесса

parikLS
10.02.2017
10:35:58
я к тому что обьект вебсокета никак не получится расшарить в другой процесс

Askhat
10.02.2017
10:36:07
Вот в этом то и проблема

Сергей
10.02.2017
10:36:09
всем привет, подскажите лучший вариант для написания документации к API

Страница 120 из 1273