Python:自动处理cookie时发送异步http请求?

时间:2010-02-22 23:43:53

标签: python http asynchronous cookies

我正在编写一个Web服务的python(2.6)接口。我需要通过http进行通信,以便:

  • Cookie 会自动处理,
  • 请求是异步
  • 遵守发送请求的订单(收到对这些请求的响应的顺序无关紧要。)

我尝试过很容易从内置库中获取的内容,面临不同的问题:

  • 使用httpliburllib2,请求是同步的,除非我使用thread,在这种情况下订单不能保证得到尊重,
  • 使用asyncore,没有库自动处理Web服务发送的cookie。

经过一些谷歌搜索后,似乎有很多python脚本或库的例子与3个标准中的2个匹配,但不是3个。我正在考虑阅读cookielib来源并根据asyncore调整我需要的内容(或者仅以 ad hoc 方式调整我的应用程序),但这似乎很奇怪没有这样的东西存在,因为我想我不是唯一感兴趣的人。如果有人知道关于这个问题的指示,那将非常感激。

谢谢。

编辑以澄清:

我正在做的是一个本地代理,它将我的IRC客户端与网络聊天接口。它创建一个侦听IRC连接的套接字,然后在接收到它时,它通过http登录网络聊天。我无法访问网络聊天的行为,并且它使用cookie作为会话ID。当客户端向我的python代理发送多个IRC请求时,我必须通过http和cookie将它们转发到webchat的服务器。我也想异步执行此操作(我不想在发送下一个请求之前等待http响应),目前发生的情况是发送http请求的顺序不是IRC的顺序命令已收到。

我希望这能澄清这个问题,如果没有,我当然会详细说明。

1 个答案:

答案 0 :(得分:2)

  

使用httplib和urllib2,   请求是同步的,除非我使用   线程,在这种情况下订单不是   保证受到尊重

除非在将响应发送到第二个连接之前从第一个连接获得响应,否则您如何知道订单已被尊重?毕竟,您不关心响应的顺序,因此响应很可能以您期望的顺序返回,但您的请求的处理顺序错误!

您可以保证订购的唯一方法是在开始第二个请求之前等待确认第一个请求已成功到达(例如,您开始接收响应)。您可以通过不启动第二个线程直到到达第一个线程的响应处理部分来执行此操作。