Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Отложенное/фоновое выполнение запроса / 21 сообщений из 21, страница 1 из 1
21.07.2015, 13:46
    #39012280
westvovik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отложенное/фоновое выполнение запроса
Народ подскажите какое либо решение:

При вставке в таблицу у меня триггер обрабатывает обновление материальной вьюшки, и в последнее время возрастает задержка при обновлении, как бы так сделать чтоб эта вьюшка обновилась в фоновом режиме, чтоб пользователь не ждал каждый раз завершения обновления вьюшки?

Увидел решение с gearman, вообщем то он меня устраивал бы еслиб я мог прям из базы вставить в таблицу очереди gearman и он бы их выполнил, однако он не хочет выполнять вставленные вручную в очередь задачи
...
Рейтинг: 0 / 0
21.07.2015, 20:13
    #39012718
Electric200
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отложенное/фоновое выполнение запроса
westvovik,
SET synchronous_commit = off;
А вообще не понятно в "фоном режиме" и что значит "он не хочет выполнять вставленные вручную"..
...
Рейтинг: 0 / 0
22.07.2015, 15:47
    #39013521
Gold_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отложенное/фоновое выполнение запроса
westvovik,

Использовать более другую очередь ("более постгресовую"), например pqq (или другие) будете в триггере писать в очередь.
...
Рейтинг: 0 / 0
23.07.2015, 12:46
    #39014373
westvovik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отложенное/фоновое выполнение запроса
Gold_westvovik,

Использовать более другую очередь ("более постгресовую"), например pqq (или другие) будете в триггере писать в очередь.

А вот в сторону PGQ я смотрел, но что то не могу найти внятной инструкции на установку, вообще откуда ее взять подскажите, сервер у меня на FreeBsd?

Надо устанавливать Skytools как я понимаю для этого? Или я не прав?
...
Рейтинг: 0 / 0
23.07.2015, 13:44
    #39014448
westvovik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отложенное/фоновое выполнение запроса
Ну с установкой справился и удачно запустил, вопрос как этим пользоваться?

Есть тут кто знающий PGQ подскажите как мне к примеру поставить в очередь запуск ф-ции к примеру text?
...
Рейтинг: 0 / 0
23.07.2015, 15:07
    #39014533
Misha Tyurin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отложенное/фоновое выполнение запроса
westvovik,

покажите вашу схему, что у вас там за "материальная вьюшка", и как вы её обновляете и как планируете.

решение на очереди pgq тут может быть, но оч вероятно, что вы что-то делает не так
...
Рейтинг: 0 / 0
23.07.2015, 15:14
    #39014546
westvovik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отложенное/фоновое выполнение запроса
Misha Tyurin,

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

Из за этого пересчитывать надо несколько месяцев была сделана такая вьюшка.

Вообщем то даже не суть, что мне эту вьюшку надо обновить, у меня там есть задачи и другие, которые требуют вычислений, но можно мгновенно их не делать, вот тут и очередь нужна, а вьюшку эту для теста хотел так настроить и посмотреть вообще как очереди надежно ли работают
...
Рейтинг: 0 / 0
23.07.2015, 15:45
    #39014600
Misha Tyurin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отложенное/фоновое выполнение запроса
westvovik,

если хотите процессить батчи в той же базе, что и источник, -- то вам надо обычный консумер.

https://github.com/markokr/skytools
https://github.com/markokr/skytools/blob/master/python/pgq/consumer.py

поищите, в инете много инфы.

я только на этом форуме несколько раз подборку ссылок давал и по pgq и по консумерам и по процессингу обобщенному
...
Рейтинг: 0 / 0
23.07.2015, 15:59
    #39014630
Misha Tyurin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отложенное/фоновое выполнение запроса
...
Рейтинг: 0 / 0
23.07.2015, 16:04
    #39014644
Misha Tyurin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отложенное/фоновое выполнение запроса
Misha Tyurin,

! но,
это может быть и дорогой в нетуда... -- использовать, только если понимаете как оно работает (хорошо хоть разобраться не сложно).
...
Рейтинг: 0 / 0
23.07.2015, 16:05
    #39014646
Misha Tyurin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отложенное/фоновое выполнение запроса
Misha Tyurin,

но с другой стороны, для целого класса задач, альтернативы pgq просто нету.
...
Рейтинг: 0 / 0
23.07.2015, 17:46
    #39014816
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отложенное/фоновое выполнение запроса
westvovikMisha Tyurin,

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

Из за этого пересчитывать надо несколько месяцев была сделана такая вьюшка.

это всё считается инкрементально, т.е. агрегировать заново "несколько месяцев" не надо, надо наварить дельту к итогам


вот если задним числом тариф меняется, или ещё более сложный профиль вклада в агрегаты и надо пересчитать всё это, а хорошая аддитивщина [для инкремента] не вычисляется -- вот тогда триггерно набрасываем задания на пересчет, а потом безо всякой очереди джобами подбираем остатки по набросанным задачам.

связываться для этого с пгку -- заведомо лишнее (а к переносу скажем пгдампом ещё и негодное -- по самой привязке "очередей" к счетчику транзакций конкретной дб. там вообще тараканы имели друг--друга в голове проектировщика пегекю, думается)
...
Рейтинг: 0 / 0
23.07.2015, 17:55
    #39014828
Misha Tyurin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отложенное/фоновое выполнение запроса
с дампом известный воркараунд

http://skytools.projects.pgfoundry.org/skytools-3.0/doc/faq.html#_dump_restore
...
Рейтинг: 0 / 0
23.07.2015, 18:14
    #39014852
westvovik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отложенное/фоновое выполнение запроса
Misha Tyurinwestvovik,

если хотите процессить батчи в той же базе, что и источник, -- то вам надо обычный консумер.

https://github.com/markokr/skytools
https://github.com/markokr/skytools/blob/master/python/pgq/consumer.py

поищите, в инете много инфы.

я только на этом форуме несколько раз подборку ссылок давал и по pgq и по консумерам и по процессингу обобщенному

Не совсем понял можно ли консумер на SQL написать? вроде написано что поддерживается написание консумеров на разных языках?

Т.е. правильно ли я понимаю, я должен написать какойто обработчик событий - это и есть консумер, а в нем я уже буду писать код как такое событие обрабатывать так?

Событие сгенерировать вот этой ф-цие pgq.insert_event, правильно?
...
Рейтинг: 0 / 0
23.07.2015, 18:42
    #39014881
Misha Tyurin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отложенное/фоновое выполнение запроса
westvovik,

нуууу... типа того. я вам накидал много примеров
...
Рейтинг: 0 / 0
23.07.2015, 19:25
    #39014897
westvovik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отложенное/фоновое выполнение запроса
Misha Tyurin,

Не пойму что не так с конфигом, не хочет запускаться

[pgqd]

# where to log
logfile = /var/log/pgqd.log

# pidfile
pidfile = /var/run/pgqd/pgqd.pid

## optional parameters ##

# libpq connect string without dbname=
#base_connstr =

# startup db to query other databases
#initial_database = template1

# limit ticker to specific databases
#database_list =

# log into syslog
#syslog = 1
#syslog_ident = pgqd

## optional timeouts ##

# how often to check for new databases
#check_period = 60

# how often to flush retry queue
#retry_period = 30

# how often to do maintentance
#maint_period = 120

# how often to run ticker
#ticker_period = 1


[mailer_daemon]
job_name = mailer_daemon
src_db = hvo_main
dst_db = hvo_main
pgq_queue_name = mailer
dst_query = SELECT * FROM function_to_be_run(%%(username)s, %%(email)s);
logfile = /var/log/%(job_name)s.log
pidfile = /var/run/pgqd/pid/%(job_name)s.pid

Ошибка
2015-07-23 19:22:30.152 18212 ERROR fill_defaults fail
2015-07-23 19:22:30.152 18212 FATAL @pgqd.c:77 in function load_config(): failed to read config
...
Рейтинг: 0 / 0
23.07.2015, 22:09
    #39014955
p2.
p2.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отложенное/фоновое выполнение запроса
westvovik,

поэкскрементируй с листен/нотифы. правда с гарантированностью доставки облам, но для данной задачи при старте подписчика можно принудительно выполнять обновление.
...
Рейтинг: 0 / 0
24.07.2015, 11:40
    #39015220
westvovik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отложенное/фоновое выполнение запроса
p2., Я думаю что дожму уж PGQ, тут осталось настроить то
...
Рейтинг: 0 / 0
24.07.2015, 13:20
    #39015389
westvovik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отложенное/фоновое выполнение запроса
Разобрался написал простой консумер на Python

файл mailer.py

import sys, os, pgq, skytools

class Mailer(pgq.Consumer):
def sendWelcomeMail(self, params):
"""try to send mail, return true on success, false on failure"""
return True

def process_batch(self, src_db, batch_id, ev_list):
for ev in ev_list:
d = skytools.db_urldecode(ev.data)
self.log.debug ("event : %s | type : %s | inserted by : %s" % (d, ev.type, ev.extra1))
if not self.sendWelcomeMail(d):
sys.exit(1)
ev.tag_done()

if __name__ == '__main__':
script = Mailer("mailer_daemon","src_db",sys.argv[1:])
script.start()


файл mailer.conf

[mailer_daemon]
job_name = mailer_daemon

src_db = dbname=hvo_main

pgq_queue_name = mailer
pgq_consumer_id = %(job_name)s

logfile = /var/log/pgqd/%(job_name)s.log
pidfile = /var/run/pgqd/%(job_name)s.pid


Запуск оброботки python mailer.py mailer.conf -v
...
Рейтинг: 0 / 0
24.07.2015, 13:24
    #39015395
westvovik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отложенное/фоновое выполнение запроса
Теперь след вопрос, подскажите как из этого консумера к примеру запустить в Postgresql ф-цию test?

Какой синтаксис подскажите плиз, я python вообще не знаю
...
Рейтинг: 0 / 0
24.07.2015, 19:05
    #39015752
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отложенное/фоновое выполнение запроса
Misha Tyurinс дампом известный воркараунд

http://skytools.projects.pgfoundry.org/skytools-3.0/doc/faq.html#_dump_restore снкс
хороший костылик, годный


и даже со снапшотами на стыке вроде всё хорошо . нет ?


вот только несколько таких базенок в один инстанс задним числом налить -- крепко думать надо. (стартовать от максимума, кажется. и не перепутать).
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Отложенное/фоновое выполнение запроса / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]