Hi Pavan,

Cool AIP!  I posted a discussion yesterday
(https://github.com/apache/airflow/discussions/42645) to get feedback on
a Periodic[Callback]Trigger that would run callbacks recurrently with
custom sensors in mind and thought it could be expanded into essentially
what you've envisioned with a "deferrable base sensor".

Personally, I'm quite interested in supporting a rich fixed time or
backoff rate configurable behavior so that custom sensors may benefit
from enabling deferrable while not having to implement triggers and only
configuring the "wait" strategy.

A few opinions on the proposal:

- In my code test
(
https://github.com/Alexhans/airflow/commit/57a0383d8a2e3a4332c79bcac3df100bde777472),

because I didn't really need the context, I used the same serialization
tool that is used for the classpath: `from airflow.utils.module_loading
import import_string` but I understand the base sensor usecase would
need the context.  Is it possible that the serialization logic already
in `airflow.utils.context.py::Context.__reduce_ex__` ?

- A consistent behavior where every operator implements
deferrable=True/False seems desirable to me.  Having  just one sensor
(The same way operators do it, see AWS provided operators or my code)
makes it easier to reason about and code changes for the user would be
just at an argument level.  I know mode=reschedule|poke seems to
conflict with deferrable=True but limiting the incompatible combinations
should be simple enough.

@Blain David: Thanks for that msgraph example.  The usage of
TimeDeltaTrigger in combination with retry_execute is very elegant.

I'm happy to help in any way.

Best,

Alex

On 2024/09/27 07:51:51 Pavankumar Gopidesu wrote:
 > Thank you David, Yes this is not to block any workers. Looking for more
 > feedback. appreciate your time.
 >
 > Regards,
 > Pavan
 >
 > On Thu, Sep 26, 2024, 11:26 Blain David <da...@infrabel.be> wrote:
 >
 > > Hello Pavan Kumar,
 > >
 > > I really like your proposition as this would have facilitated my
 > > implementation of the MSGraphSensor, which is actually implemented as a
 > > deferrable using a triggerer.
 > >
 > > You can check here how I did it:
 > >
https://github.com/apache/airflow/blob/main/airflow/providers/microsoft/azure/sensors/msgraph.py
 > >
 > > The idea was the same as in your proposition to not block workers when
 > > using a sensor by implementing it as a deferrable.
 > >
 > > Kind regards,
 > > David
 > >
 > > -----Original Message-----
 > > From: Pavankumar Gopidesu <go...@gmail.com>
 > > Sent: Thursday, September 26, 2024 11:01 AM
 > > To: dev@airflow.apache.org
 > > Subject: Re: [DISCUSS] Sensor Improvements With Tirggers
 > >
 > > EXTERNAL MAIL: Indien je de afzender van deze e-mail niet kent en deze
 > > niet vertrouwt, klik niet op een link of open geen bijlages. Bij
twijfel,
 > > stuur deze e-mail als bijlage naar ab...@infrabel.be<mailto:
 > > ab...@infrabel.be>.
 > >
 > > Hello Everyone,
 > >
 > > After discussion on the slack channel, I have decided to retain the
 > > current synchronous sensor to offer users the choice to execute
sensors on
 > > workers.
 > > I have revised the proposal to introduce a new asynchronous version
of the
 > > sensor, eliminating the need for workers to run sensors. Additional
details
 > > have been included below. Your review and feedback are greatly
appreciated.
 > > I am eager to hear from you.
 > >
 > >
 > >
https://cwiki.apache.org/confluence/display/AIRFLOW/AIP+87%3A+Run+Sensors+in+Triggerer+with+AsyncBaseSensor
 > >
 > >
 > >
 > > Regards,
 > > Pavan Kumar
 > >
 > >
 > > On Wed, Aug 14, 2024 at 11:48 PM Pavankumar Gopidesu <
 > > gopidesupa...@gmail.com> wrote:
 > >
 > > > Hi Wei Lee,
 > > >
 > > > Thanks for the review, While I was working on the POC , I had a
bit of
 > > > confusion about how to use the logic present inside the sensor
execute
 > > > method. for both with and without triggerer flow.
 > > > so to make it work for both flows, I have moved out to execute logic
 > > > with two methods.
 > > >
 > > > I appreciate the idea of a simple helper function, I'm eager to hear
 > > > any suggestions you might have or anyone :).
 > > >
 > > > Regards,
 > > > Pavan Kumar
 > > >
 > > > On Wed, Aug 14, 2024 at 12:16 PM Wei Lee <we...@gmail.com> wrote:
 > > >
 > > >> Thank you for bringing this up! I have added some comments to the
 > > >> document. I'm unsure if we really want or need to implement more
 > > >> complex logic for this. What I have in mind is simply adding helper
 > > >> functions to InternalSensorTrigger and continuing to use the run
method
 > > in BaseTrigger.
 > > >> The main purpose of those methods is to allow operator authors to
 > > >> change the sensors to leverage this start/end from trigger more
easily.
 > > >>
 > > >> Best,
 > > >> Wei
 > > >>
 > > >> > On Aug 14, 2024, at 5:19 PM, Pavankumar Gopidesu <
 > > >> gopidesupa...@gmail.com> wrote:
 > > >> >
 > > >> > Hi Jarek,
 > > >> >
 > > >> > Thanks for the questions :) ,
 > > >> >
 > > >> > I completely agree with you , from 2.10 we have the
 > > >> > start_from_trigger parameter, which , when set , allows a task to
 > > >> > be executed directly from the triggerrer without worker
 > > >> > involvement. I believe that for any sensor to be executed in the
 > > >> > triggerer, a corresponding trigger implementation must be in
place.
 > > >> > Good thing is , most of the required trigger implementations are
 > > >> > already available in current airflow providers.
 > > >> >
 > > >> > Additionally, i agree that there is no real difference between a
 > > >> deferrable
 > > >> > sensor and a deferrable operator,
 > > >> > generally , users utilize the BaseSensorOperator to create custom
 > > >> sensors,
 > > >> > However if they want to run
 > > >> > these sensors in triggerer, they must implement the
triggerer's run
 > > >> method
 > > >> > by extending the base trigger class.
 > > >> >
 > > >> > The key difference with this proposal is the introduction of a
 > > >> > common trigger implementation (referred to in this POC as
 > > >> > InternalSensorTrigger )[1]. This would allow users to use the new
 > > >> > feature start_from_trigger param with their custom sensor and
 > > >> > eliminates the need for individual trigger implementations for
each
 > > >> > custom sensor when they create.
 > > >> >
 > > >> > Alternatively, we could leave the start_from_trigger parameter in
 > > >> > BaseSensorOperator with a default value as false and let users
 > > >> > decide whether they want to run the sensor
 > > >> in
 > > >> > triggerrer. If they choose to do so, they can simply set the
 > > >> > parameter to true and triggerrer uses the InternalSensorTrigger
 > > >> > class.
 > > >> >
 > > >> > Apologies if my answer is too confusing :)
 > > >> >
 > > >> > [1]:
 > > >> >
 > > >> https://git/
 > > >>
hub.com%2Fapache%2Fairflow%2Fpull%2F41355%2Ffiles%23diff-7486f32e385d
 > > >>
7ad0376cccda08d80e54939aa901a24616d11fb1f5cba6af7f83R144&data=05%7C02
 > > >>
%7Cdavid.blain%40infrabel.be%7Ce13a7cc2a5fd4807701e08dcde09ebc7%7Cb82
 > > >>
bc314ab8e4d6fb18946f02e1f27f2%7C0%7C0%7C638629381398366280%7CUnknown%
 > > >>
7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJ
 > > >>
XVCI6Mn0%3D%7C0%7C%7C%7C&sdata=3wwm43IOv4KUwciQatVOM5CKRmwYn4HBsiBZEM
 > > >> p2jvI%3D&reserved=0
 > > >> >
 > > >> > Regards,
 > > >> > Pavan Kumar
 > > >> >
 > > >> > On Wed, Aug 14, 2024 at 12:29 AM Jarek Potiuk <ja...@potiuk.com>
 > > wrote:
 > > >> >
 > > >> >> How does it differ from the upcoming 2.10 feature?
 > > >> >>
 > > >> >> * Deferrable operators can now execute directly from the
triggerer
 > > >> without
 > > >> >> needing to go through the worker. This is especially
efficient for
 > > >> certain
 > > >> >> operators, like sensors, and can help teams save both time
and money.
 > > >> >>
 > > >> >> As of 2.10 - Sensors already can run mostly in Triggerrer and
 > > >> >> basically there is no big difference any more between deferrable
 > > >> >> sensor and deferrable operator.
 > > >> >>
 > > >> >>
 > > >> >> On Mon, Aug 12, 2024 at 3:59 AM Kaxil Naik <ka...@gmail.com>
 > > >> wrote:
 > > >> >>
 > > >> >>> Thanks for putting this together, I will take a look this week.
 > > >> >>>
 > > >> >>> On Fri, 9 Aug 2024 at 13:12, Pavankumar Gopidesu <
 > > >> >> gopidesupa...@gmail.com>
 > > >> >>> wrote:
 > > >> >>>
 > > >> >>>> Hi All,
 > > >> >>>>
 > > >> >>>> I have created a draft document for Sensor Improvements using
 > > >> triggers.
 > > >> >>>>
 > > >> >>>> Details:
 > > >> >>>>
 > > >> >>>>
 > > >> >>>
 > > >> >>
 > > >> https://doc/
 > > >>
s.google.com%2Fdocument%2Fd%2F1Kb_wL-T1DHkOpmR_QNa3O5p_2hMTLzM-sb_HzQ
 > > >>
0PYCo%2Fedit%3Fusp%3Dsharing&data=05%7C02%7Cdavid.blain%40infrabel.be
 > > >>
%7Ce13a7cc2a5fd4807701e08dcde09ebc7%7Cb82bc314ab8e4d6fb18946f02e1f27f
 > > >>
2%7C0%7C0%7C638629381398384359%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLj
 > > >>
AwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sda
 > > >> ta=ve%2FbzO8Vqe8K5yKdMVVsnAmD6zPl0gh7WyBrO6IeKjw%3D&reserved=0
 > > >> >>>>
 > > >> >>>> POC:
 > > >> >>>>
 > > >> >>>>
https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%25
 > > >> >>>>
2Fgithub.com%2Fapache%2Fairflow%2Fpull%2F41355&data=05%7C02%7Cda
 > > >> >>>>
vid.blain%40infrabel.be%7Ce13a7cc2a5fd4807701e08dcde09ebc7%7Cb82
 > > >> >>>>
bc314ab8e4d6fb18946f02e1f27f2%7C0%7C0%7C638629381398402033%7CUnk
 > > >> >>>>
nown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6I
 > > >> >>>>
k1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=sYLKcAYQsysHC2%2FPsyV9m
 > > >> >>>> Ze%2BWu%2BL2HyJ0SlPulVIvEg%3D&reserved=0
 > > >> >>>>
 > > >> >>>> This is my first draft post, apologies if any mistakes in the
 > > >> >> document. I
 > > >> >>>> would greatly appreciate your insights and suggestions on
draft.
 > > >> >>>>
 > > >> >>>> Thank you very much for your time.
 > > >> >>>>
 > > >> >>>> Regards,
 > > >> >>>> Pavan
 > > >> >>>>
 > > >> >>>
 > > >> >>
 > > >>
 > > >>
 > > >>
---------------------------------------------------------------------
 > > >> To unsubscribe, e-mail: dev-unsubscr...@airflow.apache.org
 > > >> For additional commands, e-mail: dev-h...@airflow.apache.org
 > > >>
 > > >>
 > >
 >

Reply via email to