Это правда, что time.sleep(10)
заблокирует ваш активный поток.На самом деле вы можете обнаружить, что использование Python 3 async / await - путь к успеху.К сожалению, у меня пока нет большого опыта работы с этими ключевыми словами, но другой путь может заключаться в реализации потоков Python.
https://docs.python.org/3/library/threading.html
Вот один из способов реализовать эту функцию.
import threading
def poll_counter(customer, transfer_chat_url, data, send_count=5, interval=10):
send_msg_counter = 0
check_status = False
while not check_status:
check_status = requests.post(transfer_chat_url, data=data)
if send_msg_counter < send_count:
send_msg("please wait", customer)
send_msg_counter += 1
time.sleep(interval)
# If we're here, check status became true
return None
... pre-existing code ...
threading.Thread(target=poll_counter, args=(customer, transfer_chat_url, data)).start()
... proceed to handle other tasks while the thread runs in the background.
Теперь я не буду вдаваться в подробности, но есть случаи, когда многопоточность является серьезной ошибкой.Это не должно быть одним из них, но вот хорошее прочтение для вас, чтобы понять эти варианты использования.https://realpython.com/python-gil/
Также, для получения более подробной информации об asyncio (async / await), вот хороший ресурс.https://docs.python.org/3/library/asyncio-task.html