11 / 11 / 5
Регистрация: 12.10.2013
Сообщений: 54
|
|||||||||||
1 | |||||||||||
Сопрограмма для обработчика запросов20.12.2015, 22:46. Показов 785. Ответов 6
Метки нет Все метки)
(
Пытаюсь разобраться с сопрограммами в питоне, возникла проблема (понимания сопрограмм в целом мне точно недостает)
Пытаюсь реализовать простую модель: Есть обработчик запросов, когда приходит запрос он идет на удаленный сервер за данными далее выводит сообщение Примерно так я себе это представляю
Как добавлять в loop новые future, не дожидаясь исполнения старых
0
|
|
20.12.2015, 22:46 | |
Ответы с готовыми решениями:
6
Вызов обработчика кнопки из другого обработчика. Есть 4 формы и 4 файла обработчика для каждой. Срабатывает только последний для всех форм. Почему?
|
51 / 51 / 18
Регистрация: 03.12.2015
Сообщений: 167
|
||||||
21.12.2015, 05:41 | 2 | |||||
LifeMoroz,
Я Ваш код вообще не очень понял. Если Вам нужно сделать сервер, то надо использовать start_server или create_server. Где тут у Вас прием запросов?
0
|
11 / 11 / 5
Регистрация: 12.10.2013
Сообщений: 54
|
|
21.12.2015, 16:14 [ТС] | 3 |
yield from asyncio.sleep(1) <- вот тут будет обращение к асинхронному источнику данных.
Я не хочу брать asyncio сервер. Мне нужно понять как добавлять future на исполнение из другого потока например
0
|
51 / 51 / 18
Регистрация: 03.12.2015
Сообщений: 167
|
|
21.12.2015, 16:36 | 4 |
А другой поток откуда? Может Вам не нужен тут asyncio, а нужен concurrent? Не понимаю ничего. Вот у Вас есть асинхронный сервер, который принимает запросы, дальше для каждого запроса он посылает запрос на другой сервер, принимает ответ и пересылает ответ клиенту?
Добавлено через 2 минуты Вы в 7 строчке создали Future (хотя Future не надо создавать самому). В восьмой строчке создали Task, но ссылку на него ничему не присвоили, да и сам Task не связали с циклом событий. Потом запустили цик, передав ему созданный Вами Future. Не могу отследить логику. Пояните, чего Вы хотели этими шагами достичь. Может, я просто туплю
0
|
11 / 11 / 5
Регистрация: 12.10.2013
Сообщений: 54
|
|
21.12.2015, 17:51 [ТС] | 5 |
хочу понять как это работает, поэтому туплю вероятно я.
Concurrent, насколько я понимаю, наделает кучу потоков и будет исполнять в них. Мне хочется пощупать сопрограммы. То что здесь написано, взято из какого-то примера. И оно как-то работает, пока мне не совсем точно ясно КАК. То что я писал в первом топике и есть формулировка задачи, такая абстрактная, потому что понимание сопрограмм пока в цлом именно абстрактное. Еще раз поясню: Приходит запрос (это мб на socket, а мб из другого потока исполнения, транспорты я читал, но пока не очень понятно из примеров документации куда и как), запрос идет куда-то и ждет от "куда-то" ответа, в этот момент продолжают исполняться другие запросы. Предлагаю отсюда отталкиваться, и попробовать составить код на эту задачу без использования server из asyncio. Тот код что я написал - просто попытка приблизиться к решению, на основе примеров
0
|
51 / 51 / 18
Регистрация: 03.12.2015
Сообщений: 167
|
|
21.12.2015, 19:03 | 6 |
Если не хотите использовать server, то можно вот так:
https://image.slidesharecdn.co... 1391438795
0
|
11 / 11 / 5
Регистрация: 12.10.2013
Сообщений: 54
|
||||||
22.12.2015, 00:35 [ТС] | 7 | |||||
В итоге получилось вот что:
Теперь интересует, как написать свое асинхронное событие: Например есть функция, которая долго исполняется, как выделить ее исполнение в отдельный поток, и ожидать результата в основном? Кажется выгуглил http://stackoverflow.com/quest... n-executor
0
|
22.12.2015, 00:35 | |
Помогаю со студенческими работами здесь
7
Код обработчика для ajax отправки Объединение селекторов для одного обработчика Переделка внешнего обработчика для УПП 1с 8.2 Создание своего обработчика для страницы. (2.5) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |