Найти - Пользователи
Полная версия: Асинхронное выполнение функций, callback'и
Начало » Python для экспертов » Асинхронное выполнение функций, callback'и
1
ByGreez
Привет всем!
Вопрос: Нужно сделать одновременное выполнение нескольких медленных запросов(дергание интеграций с фб, vk и тд.). Чтобы дергнул и не ждал пока придет ответ, а дальше дергал(следующие запросы), а когда приходит ответ передавал его в коллбек.
Технологии: celery, mongodb
s0rg
grequests
ByGreez
Спасибо. Буду пробовать! :)
ByGreez
Еще. Я использую сторонние библиотеки, чтобы работать с API разных сервисов.

Т.к. запросы в медленный интернет очень дорого обходятся по памяти(а если еще и воркер ждет ответа, то вообще будет беда).

Может можно как нить сделать запрос, и не ждать ответа, а выполнять код дальше.
А когда приходит ответ, дергнуть коллбек какой?
s0rg
ByGreez
Может можно как нить сделать запрос, и не ждать ответа, а выполнять код дальше.
А когда приходит ответ, дергнуть коллбек какой?
Библиотека по ссылке - оно и есть, не понимаю чем эти требования отличаются от тех, что в вашем первом сообщении.
ByGreez
Проблема в том, что использую сторонние библиотеки. И переписывать их не очень хочется.
Хотя наверно придется отказаться от них, и гонять запросы самому или заюзать весь gevent. Хотя можно попробовать пропатчить urllib.
Спасибо за подсказки!
qoqenator
Вы видимо не вкурсе про gevent.monkey.patch_all ?
https://github.com/surfly/gevent/blob/gevent013/examples/concurrent_download.py
Замените urllib на ваши библиотеки и работайте с ними асинхронно. Я надеюсь, они юзают питоновский сокет, а не pycurl?
ByGreez
qoqenator
Замените urllib на ваши библиотеки и работайте с ними асинхронно. Я надеюсь, они юзают питоновский сокет, а не pycurl?
Не все, некоторые придется переписать.
да и магии многовато)

Делаю так: ThreadPool на 10 мест, потом map_async с callback'ом когда все готово.
А в сам pool пихаю функции которые дергают интеграции.

Если не получится, буду пробовать патчить.

Спасибо.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB