Я пишу скрипт, который выполняет POST-запрос на сервер и блокируется, сервер отправляет ответ при возникновении определенного события. Я должен взять cookie для отправки запроса с более ранним запросом на вход и передать его как данные в POST, каждый файл cookie длится 10 минут, после чего я должен запустить запрос keep-alive.Получите непрерывный отклик запроса POST в python
При каждом запуске какого-либо события я хочу зарегистрировать это событие в файле, я попробовал async, unirest запросы, которые они генерируют почтовый запрос, но у меня нет контроля над выходом, я также пробовал сеансы, но бесполезно. Я хочу сделать следующие вещи в том же порядке
1] Вход (можно сделать только один раз)
2] Опубликовать запрос на сервер
3] Держите выход мониторинга шага 2 вечно всякий раз, когда есть некоторые выход запишите его в файл
4] Держите сеанс в активном состоянии другим запросом на сервер.
Дайте мне знать, если вам нужно больше объяснений.
Ниже код, он не работает, хотя
while True:
try:
xmldata = "<eventSubscribe cookie=\"%s\" />" % (self.cookie)
r = requests.post(post_url,data=xmldata,stream=False,verify=False,timeout=10)
write_to_file('Ok',r.text)
unsubevents()
logout()
except Exception as e:
print e
self.write_to_file('Ok',"")
self.login()
Таким образом, в коде выше пост вызова я делаю здесь, блокирует и непрерывен, потоки вывода непрерывно, так что после вызова никогда не будет завершена. Но он получает вывод в формате xml, сервер отправляет эти ответы каждый раз при срабатывании события.
PS: Я не хочу, чтобы сделать выход из системы и снова войти в систему, это работает в завиток, где он держит выход печати на стандартный вывод, я должен запустить этот код для нескольких серверов, как 200.
Я не понимал, чего вы на самом деле хотите. Пожалуйста, сделайте вопрос понятным, чтобы быстрее получить помощь. –
Опубликовать код. –
Что делать, если вы устанавливаете 'stream = True' и используете [r.iter_lines] (http://docs.python-requests.org/en/master/api/#requests.Response.iter_lines)? –