@ru_python

Страница 2428 из 9768
53r63rn4r
06.03.2017
17:30:13
а в асинхронщине вот как раз и есть состояние гонки, и чтобы его не было, надо очереди, да?

Nikolay
06.03.2017
17:30:31
например, корутина на обслуживание запросов и корутина на запуск внешней команды

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

Google
53r63rn4r
06.03.2017
17:30:50
бубум, взрываю моск

Octo@dshacks
06.03.2017
17:31:26
у тебя check_call() там, что ты мне рассказываешь
ну ок, сейчас все сделал, вылезла проблема с aiohttp

Возвращает код страницы

Rocket
06.03.2017
17:32:18
Вот у меня функция: async def handle(ctx): ... ctx = yield ctx.wait_next_query() ... ctx = yield ctx.wait_next_query() ... ctx = yield ctx.wait_next_query() ... return

Nikolay
06.03.2017
17:32:50
Вот у меня функция: async def handle(ctx): ... ctx = yield ctx.wait_next_query() ... ctx = yield ctx.wait_next_query() ... ctx = yield ctx.wait_next_query() ... return
то есть на каждый вызов ты ровно три обращения делаешь? и их надо делать последовательно?

Octo@dshacks
06.03.2017
17:33:11
разобрался

контент тайп забыл поставить

Pavel
06.03.2017
17:33:26
корутины для того и нужны, что состояние гонки при корректно написанном коде там невозможно в принципе
Николай, что можно прочитать про async best practiceи корректный код? А то каждый день здесь разбираются конкретные примеры, но всё это долго и трудно отследить, что происходит.

Nikolay
06.03.2017
17:33:52
а в остальном - просто статьи в блогах читай и все :) тут сложно посоветовать

Rocket
06.03.2017
17:34:29
то есть на каждый вызов ты ровно три обращения делаешь? и их надо делать последовательно?
Конкретизирую. Это телеграм-бот. У него есть визард: Пошли картинку, пошли название, пошли локацию. Каждый новый шаг это новый запрос от телеграма. Мне надо хранить state между ними. Сейчас это несколько хендлеров с ctx.set_next_handler(...) Еще когда это все было на торнаде, возникла идея делать генератор как я показал выше. Но я счел это слишком большой магией. А теперь это впрлне реально. Так вот как этот стейт сохранить и восстановить?

YaOurTea
06.03.2017
17:35:40
Google
Nikolay
06.03.2017
17:35:45
или какой-нибудь berkeley db, потому что тут схема идеально ложится на key-value

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

дампи просто туда текущий шаг и данные результатов предыдущих

Pavel
06.03.2017
17:41:18
302 статус и все
запрос в джангу точно идёт, может браузер закешировал этот редирект?

Pavel
06.03.2017
17:43:02
Почистить кэш?
в консоль джанги посмотреть для начала :)

Nikolay
06.03.2017
17:46:40
Ээээ. Серьезно?
а что тебя смущает? что возвращает ctx.set_next_handler(…)?

точнее, yield ctx.wait_next_query()

тьфу, сорри, запутался

ща

Rocket
06.03.2017
17:47:21
Первый вызов диспетчера вернет итератор.

Разве итератор можно восмтановить?

Nikolay
06.03.2017
17:47:34
у тебя хэндлеры, в которых три шага yield

так вот

Rocket
06.03.2017
17:47:55
Nikolay
06.03.2017
17:47:57
что возвращает yield ctx.wait_next_query()?

Google
Nikolay
06.03.2017
17:48:02
Rocket
06.03.2017
17:48:18
Вопрос не в этом. Как мне запиклить и распиклить состояние генератора?

YaOurTea
06.03.2017
17:49:46
в консоль джанги посмотреть для начала :)
Консоль джанги? :) В ПуЧарме вот что в кончоли выводит, когда перехожу System check identified no issues (0 silenced). March 06, 2017 - 20:47:58 Django version 1.10.5, using settings 'kursov.settings' Starting development server at http://localhost:8080/ Quit the server with CTRL-BREAK. [06/Mar/2017 20:48:05] "POST /manage/games/add_game/ HTTP/1.1" 302 0 [06/Mar/2017 20:48:05] "GET /manage/games/ HTTP/1.1" 200 19707

Nikolay
06.03.2017
17:50:02
тебе надо не генератор пиклить, а сохранять промежуточный статус так, чтобы можно было с этого же статуса потом продолжить

Nikolay
06.03.2017
17:51:07
Вопрос не в этом. Как мне запиклить и распиклить состояние генератора?
предлагаю генератор сделать стейт-машиной и внутри сделать if в зависимости от переданного аргумента, чтобы сразу перепрыгивать на нужный yield

Nikolay
06.03.2017
17:52:54
Nikolay
06.03.2017
17:53:30
есть более извращенский вариант - сделать еще один yield в начале и заставить его принимать состояние через send()

но это ж будет ад, никто, кроме тебя, этот код не поймет

и да, это будет - УРА - асинхронный генератор

YaOurTea
06.03.2017
17:54:08
ну вот, нет запроса "GET /manage/games/add_game/ HTTP/1.1" , то есть надо с браузром разбираться.
А вот что выдает на другой форме, рабочей, которая, блин, абсолютно так же сделана [06/Mar/2017 20:52:09] "POST /manage/commands/add_command/ HTTP/1.1" 200 4396 [06/Mar/2017 20:52:19] "POST /manage/commands/add_command/ HTTP/1.1" 302 0 [06/Mar/2017 20:52:19] "GET /manage/commands/ HTTP/1.1" 200 8184

CthUlhUzzz
06.03.2017
17:54:32
@Enchantner Ты не это искал?

asyncio.as_completed(fs, *, loop=None, timeout=None) Return an iterator whose values, when waited for, are Future instances.

CthUlhUzzz
06.03.2017
17:55:51
for f in as_completed(fs): result = yield from f # The 'yield from' may raise # Use result

Google
YaOurTea
06.03.2017
17:57:22
Кэш почистил, не помогло. Он просто закидывает в базу None в два поля и все ?

А если просто в адресной строке вписать прямую ссылку на форму - переходит и дает заполнить, и даже в базу сохраняет

Nikolay
06.03.2017
18:05:11
async def foo1(): await asyncio.sleep(1) return "foo1" async def foo2(): await asyncio.sleep(2) return "foo2" async def foo3(): await asyncio.sleep(3) return "foo3" async def scheduler(): for f in asyncio.as_completed([ asyncio.ensure_future(foo2()), asyncio.ensure_future(foo3()), asyncio.ensure_future(foo1()) ]): print(await f) return 1 loop = asyncio.get_event_loop() loop.run_until_complete(scheduler())

вот такой код правильно работает

спасибо, покопаю!

Malikov
06.03.2017
18:07:27
Добрый вечер. Подскажите куда можно податься студенту, знаю python(+основы django) немного си, также дружу с матаном. Очень хочу поработать в области анализа данных(и машинного обучения), но пока я сам понимаю, что еще не дотягиваю. Так что расматриваю все варианты, спасибо.

спб

Admin
ERROR: S client not available

Nikolay
06.03.2017
18:08:14
или ты хорошо питон знаешь? :)

Malikov
06.03.2017
18:08:56
вроде хорошо)

53r63rn4r
06.03.2017
18:13:15
А киевляне есть?

Nikolay
06.03.2017
18:13:19
Мда. ?
не знаю, где сейчас Бизли, но наверняка он перевернулся

Google
Rocket
06.03.2017
18:13:29
Либо забить на сохранение этого state ибо у меня все остальное stateless.

Nikolay
06.03.2017
18:13:53
Bogdan
06.03.2017
19:07:32
Здравствуйте. Я сюда на минутку, ищу прогера проффесионала. Нужно написать многопоточный софт, работа с одной из популярных социальных сетей. 300-400$ бюджет. оплата биток если есть желающие пишите @kalne

53r63rn4r
06.03.2017
19:07:42
@python_beginners

Bogdan
06.03.2017
19:07:54
тут такие суммы не интересны?)

b0g3r
06.03.2017
19:07:59
почему в бегиннерс? О_О

53r63rn4r
06.03.2017
19:07:59
Тут нет

Bogdan
06.03.2017
19:08:10
ну там день работы)))

300-400 в день вроде норм

Aragaer
06.03.2017
19:08:36
многопоточный софт, соцсети и биткоины - пахнет чем-то не до конца легальным

53r63rn4r
06.03.2017
19:08:37
почему в бегиннерс? О_О
Я просто подготовил, думал он с вопросом

b0g3r
06.03.2017
19:08:45
лол

Aragaer
06.03.2017
19:08:51
типа ддосов или ботов

53r63rn4r
06.03.2017
19:09:02
Мб бот спамер

Aragaer
06.03.2017
19:09:20
или накрутка счетчиков

53r63rn4r
06.03.2017
19:09:43
Популярные соц.сети

Такс такс такс, надо подумать, чтоже это может быть

Очень сложно

Aragaer
06.03.2017
19:11:48
fecebook

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