@ru_python

Страница 804 из 9768
Dmitry
25.05.2016
11:16:00
Если бы у тебя было def print_hello(name=''): , то примерно так: from celery import Celery celery = Celery() celery.config_from_object('celeryconfig') celery.send_task('print_hello', ("Oleg"))

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

Sasha
25.05.2016
11:18:08
прям вот взять и в отдельном venv забацать два тупых демона, в одном из которых hello world, а из другого его дергаешь
Я уже всю доку проштудировал. Это нереально то тчо ты сказал. Там максимум, что можно сделать - передать: q = Queue(connection=conn) q.enqueue('package.func', args)А для этого, для каждого отдельного приложения нужен свой воркер.

Олег
25.05.2016
11:18:25
Ага, то есть я просто кидаю в RMQ сообщение в нужную queue и celery с той стороны сама слушает, что что -то пришло и исполняет это. Начинаю догонять

Google
Dmitry
25.05.2016
11:19:05
если тебе не нужен результат выполнения, то вообще все просто. если нужен, чуть сложнее. но я думаю ты и сам там уже наковыряешь

Олег
25.05.2016
11:28:34
run.py from celery import Celery celery = Celery() celery.config_from_object('celeryconfig') celery.send_task('print_hello') celeryconfig.py BROKER_URL = 'amqp://guest:guest@dr-1cutapp003:5672//' CELERY_IMPORTS = ('tasks', ) Получаю ошибку ConnectionResetError: [WinError 10054] Удаленный хост принудительно разорвал существующее подключение telnet dr-1cutapp003 5672 проходит успешно, то есть проблем с доступом нет

А-а-а, guest же только локально работает!!

Dmitry
25.05.2016
11:44:24
именно :)

Олег
25.05.2016
11:46:48
А что мне celery в ответ возвращает? e56f4a2b-1c86-4918-b76e-39ed4ff662cb Как это интерпретировать? Как id сообщения в RMQ?

Dmitry
25.05.2016
11:47:05
ну типа taskid, забей :)

Олег
25.05.2016
11:48:33
Не-не. Я переписал helloworld from celery import Celery from celery import task app = Celery('tasks', backend='amqp', broker='amqp://guest@localhost//') @app.task def print_hello(x): return x*2 То есть я уже результат хочу получить

Вызываю так result = celery.send_task('print_hello', [5])

Dmitry
25.05.2016
12:29:13
тогда тебе нужен настроенный CELERY_RESULT_BACKEND (их много, можно sql база, можно redis, можно тот же rabbitmq, но тогда не забудь включить CELERY_RESULT_PERSISTENT, а то при рестарте кролика не забранные результаты будут пропадать)

а, вижу, настроен уже amqp

Dmitry
25.05.2016
12:32:21
тогда дергай result.ready() пока не вернет True, и как будет готово, забирай print result.get() если в твоем хелло был косяк (например не умножал, а делил на 0), то при get() поймаешь эксепшн, если нужен трейс, то посмотришь result.traceback()

Google
Dmitry
25.05.2016
12:36:10
@zartsoft фас! :)

Alex
25.05.2016
12:36:42
Олег
25.05.2016
12:47:21
тогда дергай result.ready() пока не вернет True, и как будет готово, забирай print result.get() если в твоем хелло был косяк (например не умножал, а делил на 0), то при get() поймаешь эксепшн, если нужен трейс, то посмотришь result.traceback()
Хм, а долго ждать? Чего то у меня такой код благополучно завис: result = celery.send_task('print_hello', [5]) while result.ready() == False: print (result.ready()) настойчиво выдавая False В celeryconfig.py внес только CELERY_BACKEND = 'amqp'

Dmitry
25.05.2016
12:48:12
а в логах воркера на первой машине что?

но вообще amqp это старый уже бэкенд, попробуй rpc

CELERY_RESULT_BACKEND = 'rpc://'

не забудь, что это должно быть на обеих сторонах :) если на первом сервере (где воркер) забыл, то класть результаты никто не будет :)

Олег
25.05.2016
12:53:40
Логи. The full contents of the message body was: {'id': '8d8d7d9d-5f7c-4e58-8254-3c50c4eb334f', 'callbacks': None, 'task': 'print _hello', 'eta': None, 'expires': None, 'kwargs': {}, 'timelimit': (None, None), 'args': [5], 'utc': True, 'chord': None, 'errbacks': None, 'taskset': None, 'ret ries': 0} (257b) Traceback (most recent call last): File "c:\python35-32\lib\site-packages\celery\worker\consumer.py", line 456, i n on_task_received strategies[name](message, body, KeyError: 'print_hello'

Dmitry
25.05.2016
12:55:53
KeyError: 'print_hello' что-то пошло не так, сам же видишь

Олег
25.05.2016
12:56:31
Ага.

Dmitry
25.05.2016
12:56:40
воркер не видит таску

пошарь, что-то он видимо не импортировал, тот файл, в котором она у тебя описана

Марк
25.05.2016
13:04:53
Наверное, я буду 100500 в очереди, но раз уж она освободилась: на 3.5 имеет смысл валить или нет?

Maxim robox
25.05.2016
13:05:26
С чего?

Марк
25.05.2016
13:05:47
С 2.7 ессно

Maxim robox
25.05.2016
13:06:28
Новые проекты стартуешь на 3.x Старые, по-желанию, портируешь.

Марк
25.05.2016
13:07:38
Набор киллер фич какой-то имееется?

Google
terry
25.05.2016
13:07:52
ребята, а подскажите, что за сервер мелкософт сделал вот весной типа халявным?

Arseny
25.05.2016
13:08:10
async / await ок

Maxim robox
25.05.2016
13:08:18
print становится функцией, а не оператором. :3

Aragaer
25.05.2016
13:08:43
юниттест.мок из коробки

Марк
25.05.2016
13:09:37
мок? Простите, я из коровника

Alexander
25.05.2016
13:11:07
Набор киллер фич какой-то имееется?
будет поддерживаться после 2020

Марк
25.05.2016
13:13:22
хм

На тройке asyncore есть? Или ее заменили на asyncio?

Dmitry
25.05.2016
13:18:09
Парни тут работка есть для удалёнщиков

Кто знаком с High Charts?

Библиотека для js рендеринг красивостей

Dmitry
25.05.2016
13:18:39
?

Марк
25.05.2016
13:19:14
Не на базе d3 часом?

Dmitry
25.05.2016
13:20:15
Вроде того

Нужно сделать интерфейс в джангу, рендерить jsonы. 3 экрана ~6 таблиц 6 графиков(лол птица курица 3 шт ;D )

Марк
25.05.2016
13:23:03
Всякие графики?

Dmitry
25.05.2016
13:27:03
Ага

Олег
25.05.2016
13:33:40
воркер не видит таску
Я сдвинулся с мертвой точки. Ошибка была в том, что имя метода нужно было указывать через tasks result = celery.send_task('tasks.print_hello', ["Oleg"]) Теперь в логах есть информация [2016-05-25 16:32:50,422: INFO/MainProcess] Received task: tasks.print_hello[e424dfc4-f569-40f8-a8e4-368ed4126316] [2016-05-25 16:32:50,437: INFO/MainProcess] Task tasks.print_hello[e424dfc4-f569-40f8-a8e4-368ed4126316] succeeded in 0s: hello, Oleg Однако этот кусок все равно в бесконечном цикле result = celery.send_task('tasks.print_hello', ["Oleg"]) while result.ready() == False:

Dmitry
25.05.2016
13:42:16
Всякие графики?
Дак че готовить тз?

Google
Марк
25.05.2016
13:42:43
Не. Я ток для себя курил. За лаве не готов браться пока

Владимир
25.05.2016
13:43:42
https://github.com/novafloss/django-chartjs

Олег
25.05.2016
13:47:33
Traceback (most recent call last): File "run.py", line 5, in <module> result.get(timeout=10) File "C:\Python35-32\lib\site-packages\celery\result.py", line 169, in get no_ack=no_ack, File "C:\Python35-32\lib\site-packages\celery\backends\amqp.py", line 157, in wait_for raise TimeoutError('The operation timed out.') celery.exceptions.TimeoutError: The operation timed out.

Alexey
25.05.2016
13:48:22
#работавофисе Москва ФуллДэй Backend(Python) - Минимум 1 рабочий проект (прошу приложить ссылку на работающий проект-сайт или ссылку на гитхаб с исходниками) - Опыт работы с web фреймворками (django или аналоги) - Знание основ SQL - Знание основ клиент-серверного взаимодействия - протокол http, json/xml, websocket - Уверенное пользование системой контроля версий git - Уверенное пользование linux - Необязательно, но большим плюсом будет: - опыт работы с такими системами как cassandra, mongodb - знание Java, опыт разработки настольных приложений на Java(возможно придется помогать с разработкой клиентской части, задач много и они интересные) писать в элэс

сорри за офтоп, вдруг кому интерсно.

Admin
ERROR: S client not available

Boris
25.05.2016
13:51:34
Джава на клиенте, питон на бэке? Прикольно

Марк
25.05.2016
13:52:38
Ой, кассандра - это та пизда, которая мне оперативу на рабочем тазе забивает

Олег
25.05.2016
13:52:45
Вот такой файл celeryconfig,py BROKER_URL = 'amqp://login:password@dr-1cutapp003:5672//' CELERY_RESULT_BACKEND = 'rpc://' CELERY_IMPORTS = ('tasks', )

Dmitry
25.05.2016
13:52:48
Ага)

Не. Я ток для себя курил. За лаве не готов браться пока
Да там немного и ебать голову не буду

за результат

Марк
25.05.2016
13:54:56
Надо будет как-то вернуться к Кассандре на посмотреть еще раз.

Dmitry
25.05.2016
13:55:40
Вот такой файл celeryconfig,py BROKER_URL = 'amqp://login:password@dr-1cutapp003:5672//' CELERY_RESULT_BACKEND = 'rpc://' CELERY_IMPORTS = ('tasks', )
посмотри в RMQ через вебморду, там очереди должны создаваться на каждого task producer'а, лежит ли в них что-то

Олег
25.05.2016
13:56:23
Queues создается, но сообщений в ней я не вижу

Причем сервер в логах пишет имя очереди и клиент по print(result) отдает имя очереди

Марк
25.05.2016
13:58:09
Еще занятная OrientDb для графов. Но субьективно кажется полным отстоем

Paul
25.05.2016
14:23:51
освой уж mysqltuner дилетант, что может быть проще
человека, который использует mysqltuner на сервере для реальной настройки нагруженного mysql следует лишить любого доступа на любые сервера продакшна и проверить на профпригодность.

Google
Dmitry
25.05.2016
14:24:34
это программисты, они всегда так делают :)

тоже ведь немного админы. неуязвимого локалхоста :)

Paul
25.05.2016
14:27:24
http://backendconf.ru/2016/abstracts/2202 жаль, что HL++ традиционно зажмотится выложить запись :(

Paul
25.05.2016
14:34:50
тут иногда в слоу лог упирается
да там миллион мест, где может что-то поломаться. Slow log и log_no_index, query cache, table cache, sort cache, tmp_table_space, innodb_pool_size, вид сброса записи на диск, скорость работы диск, бинлог и его отсутствие, slave_bin_log и его особенности. Можно сидеть над этой темой бесконечно

Dmitry
25.05.2016
14:35:43
я к тому что иногда даже включенный слоу лог тормозит систему

а зпускать профайлеры-тюнеры на боевой базе это вообще

Paul
25.05.2016
14:36:48
mysqltuner - это не профайлер.

запуск профайлинга на базе хотя бы в полтысячи запросов/сек считаю своеобразным способом самоубийства

Dmitry
25.05.2016
14:41:11
Paul
25.05.2016
14:48:10
а что?
анализатор статистики и настроек. Профилировать не умеет.

Boojum
25.05.2016
14:55:39
Кукла везде пролезла

Arseny
25.05.2016
14:56:01
>Запрещено оскорбления других участников. зачем такой чат вообще нужен?

Dmitry
25.05.2016
14:56:02
анализатор статистики и настроек. Профилировать не умеет.
с учетом того что все настройки лежат в базе, то можно сказать что этот то же профайлер

просто узкоспециализированный

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