Не следует использовать result()
, если вам нужно просто вызвать что-то асинхронно. Метод result()
будет ожидать завершения background_callback
. Просто пример:
def bg_cb(sess, resp):
print('done')
# in view:
print('call async...')
session.get('http://httpbin.org/delay/3', background_callback=bg_cb)
return jsonify({'status': 'ok'}), 200
Позвоните на конечную точку, вы увидите ответ без задержки. Консольный вывод:
call async...
# after few seconds
done
Теперь давайте дождемся завершения обратного вызова:
future = session.get('http://httpbin.org/delay/3', background_callback=bg_cb)
print('wait result...')
response = future.result()
print('after result...')
Позвоните на конечную точку, вы увидите ответ с задержкой. Консольный вывод:
wait result...
done
after result...
Итак, вам не нужно result()
, если вам нужно просто запустить что-то асинхронно.
Также вы можете использовать rq или сельдерей , если вам нужна специальная асинхронная обработка.
Надеюсь, это поможет.