Python 未到达分区的可观测第二流
我有一个可以观察到的处理web请求的方法,我希望在不同的流中处理成功或失败,非常类似于。我的脚本和示例之间的主要区别在于,我不希望合并流然后订阅。我在Python2.7中使用RXPY1.6.1Python 未到达分区的可观测第二流,python,reactive-programming,rx-py,Python,Reactive Programming,Rx Py,我有一个可以观察到的处理web请求的方法,我希望在不同的流中处理成功或失败,非常类似于。我的脚本和示例之间的主要区别在于,我不希望合并流然后订阅。我在Python2.7中使用RXPY1.6.1 request = Observable.of(requests.get(self.URL, params=request_params)) request_success, request_failed = request.partition(lambda r: r.status_code == re
request = Observable.of(requests.get(self.URL, params=request_params))
request_success, request_failed = request.partition(lambda r: r.status_code == requests.codes.ok)
request_failed.subscribe(lambda r: print_msg('failure!'))
request_success.subscribe(lambda r: print_msg('success!'))
当请求失败时,脚本将打印failure代码>如预期。但是,当响应正常时,脚本不会打印success代码>。有趣的是,当您切换订阅顺序时,success代码>被打印,而失败代码>永远不会到达
我想可能request
无法进行多播,因此我尝试将publish()
添加到request
可观察,并在创建订阅后调用connect()
。这没有帮助(所以我把它从上面的最小示例中删掉了)
我遗漏了什么?将您的代码与它进行比较,看起来代码几乎是正确的
您走的是正确的道路,您确实需要将请求可观测转换为多播可观测
:
请注意,一旦请求列表变为可观察对象,它就会被发布(Observable.of(…).publish()
),只有在我们订阅分区的可观察对象之后,我们才调用connect
结果是:
success!
failure!
failure!
success!
success!
failure!
failure!
success!