Проблема в том, что open(...)
возвращает файловый объект , и вы передаете один и тот же файловый объект всем start()
сопрограммам, которые вы создаете на верхнем уровне.Экземпляр сопрограммы, который запланирован первым, передаст объект файла в session.post()
как часть параметра data
, а session.post()
прочитает файл до конца и закроет объект файла.Следующая сопрограмма start()
попытается выполнить чтение из теперь закрытого объекта, что вызовет исключение.
Чтобы устранить проблему, не открывая файл несколько раз, необходимо убедиться, что на самом деле прочитано данные в виде байтового объекта:
data = {'file': open('test_img.jpg', 'rb').read()}
Это передаст один и тот же байтовый объект всем сопрограммам, которые должны работать должным образом.