【发布时间】:2016-05-02 09:16:19
【问题描述】:
我正在编写一个脚本,该脚本向服务器发出 POST 请求并被阻止,只要触发特定事件,服务器就会不断发送响应。我必须为之前登录请求的 post 请求获取一个 cookie,并将其作为数据传递给 POST,每个 cookie 持续 10 分钟,之后我必须运行 keep-alive 请求。
每当触发某个事件时,我想将该事件记录在一个文件中,我尝试了异步、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()
所以在上面的代码中,我在这里进行的 post 调用是阻塞和连续的,它连续流式传输输出,因此 post 调用永远不会真正完成。 但是它接收xml格式的输出,每次触发事件时服务器都会发送这些响应。
PS:我不想注销并再次登录,这适用于 curl,它会在 stdout 上保持打印输出,我必须为多个服务器(如 200)运行此代码。
【问题讨论】:
-
我不明白你真正想要什么。请明确问题以便更快地获得帮助。
-
如果你设置
stream=True并使用r.iter_lines呢? -
是的,也试过了,没用。发生的情况是,它将保持会话 10 分钟,然后抛出错误。我们可以保持会话活跃。我也试过用 keep_alive 的会话没有给出任何输出
标签: python python-2.7 curl request python-requests