Python 未到达分区的可观测第二流

Python 未到达分区的可观测第二流,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

我有一个可以观察到的处理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 == 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!