Slide 1

Slide 1 text

Reactive Programming with RxPy

Slide 2

Slide 2 text

$Whoami $ @valerybriz $ Pythonista $ Telecomm Engineer $ Co-Founder and Leader of Python Guatemala $ Systems Development Specialist at Skyguard GPS

Slide 3

Slide 3 text

What Does Reactive Programming Really Means?

Slide 4

Slide 4 text

Why Reactive Programming?

Slide 5

Slide 5 text

Why Reactive Programming?

Slide 6

Slide 6 text

Why Reactive Programming?

Slide 7

Slide 7 text

How Does Reactive Programming Works?

Slide 8

Slide 8 text

Observable and Observer onNext() onComplete() onError()

Slide 9

Slide 9 text

Observables source = Observable.from_list([1,2,3,4,5,6])

Slide 10

Slide 10 text

Observers source.subscribe(lambda value:print("Received {0}".format(value)))

Slide 11

Slide 11 text

Subjects mySubject = subject.on_next([1,2,3,4,5,6]) mySubject.subscribe(send_response, on_error)

Slide 12

Slide 12 text

Data Operators in Reactive Programming • Creating Observables • Transforming Observables • Filtering Observables • Combining Observables • Error Handling Operators • Observable Utility Operators • Conditional and Boolean Operators • Mathematical and Aggregate Operators • Connectable Observable Operators

Slide 13

Slide 13 text

Observable.just(a,b,c,d)

Slide 14

Slide 14 text

Observable.filter( lambda text: not text or len(text) > 2 )

Slide 15

Slide 15 text

Subject.flat_map( lambda value: Observable.from_future( self.get_value(value) ) )

Slide 16

Slide 16 text

Subject.do_action( lambda x: send_response('clear') )

Slide 17

Slide 17 text

user_input.combine_latest( interval, lambda input_value, i:input_value )

Slide 18

Slide 18 text

Advantages of Reactive Programming •Asynchronous •Error Handling •Multiple Subscribers •Functional programming

Slide 19

Slide 19 text

Trying it out self.subject = Subject() user_input = self.subject.throttle_last( 1000 ).start_with("").filter( lambda text: not text or len(text) > 2 )

Slide 20

Slide 20 text

Trying it out self.combine_latest_sbs = user_input.combine_latest( interval, lambda input_val, i: input_val ).do_action( lambda x: send_response('clear') ).flat_map( self.get_data ).subscribe(send_response, on_error)

Slide 21

Slide 21 text

Conclusions

Slide 22

Slide 22 text

No content