
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
Возвращает код страницы

Nikolay
06.03.2017
17:31:49

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

Octo@dshacks
06.03.2017
17:33:11
разобрался
контент тайп забыл поставить

Pavel
06.03.2017
17:33:26

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 статус и все
запрос в джангу точно идёт, может браузер закешировал этот редирект?

Nikolay
06.03.2017
17:41:58
ну да, это не совсем безопасный вариант, но он вменяемый

YaOurTea
06.03.2017
17:42:36

Pavel
06.03.2017
17:43:02

Rocket
06.03.2017
17:46:23

Nikolay
06.03.2017
17:46:40
точнее, 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
тебе надо не генератор пиклить, а сохранять промежуточный статус так, чтобы можно было с этого же статуса потом продолжить

Pavel
06.03.2017
17:50:43

Nikolay
06.03.2017
17:51:07

Rocket
06.03.2017
17:52:07

Nikolay
06.03.2017
17:52:36

Rocket
06.03.2017
17:52:43

Nikolay
06.03.2017
17:52:54

Nikolay
06.03.2017
17:53:30
есть более извращенский вариант - сделать еще один yield в начале и заставить его принимать состояние через send()
но это ж будет ад, никто, кроме тебя, этот код не поймет
и да, это будет - УРА - асинхронный генератор

YaOurTea
06.03.2017
17:54:08

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.

Nikolay
06.03.2017
17:55:13

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) немного си, также дружу с матаном. Очень хочу поработать в области анализа данных(и машинного обучения), но пока я сам понимаю, что еще не дотягиваю. Так что расматриваю все варианты, спасибо.
спб

Nikolay
06.03.2017
18:07:59

Admin
ERROR: S client not available

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

53r63rn4r
06.03.2017
18:08:17

b0g3r
06.03.2017
18:08:25
и там спросить, раз уж спб и ищешь работу

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

Nikolay
06.03.2017
18:09:29
комьюнити тематическое, не так давно перевалило 3000 человек

Rocket
06.03.2017
18:12:52

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

Rocket
06.03.2017
18:14:12

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 в день вроде норм

Nikolay
06.03.2017
19:08:21

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

53r63rn4r
06.03.2017
19:08:37

b0g3r
06.03.2017
19:08:45
лол

53r63rn4r
06.03.2017
19:08:47

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