簡體   English   中英

如何在氣流中使用傳感器從mongodb讀取數據?

[英]How can i use sensor in airflow to read from mongodb?

我正在尋找一個工作流程,其中我的dag在遠程服務器上啟動一個進程,並監視進程中的每個任務是否成功,它應該從mongo-db讀取狀態,如果任務成功,則下一個任務將被觸發。 有什么辦法可以實現? 我認為我應該使用mongo_sensor,但不確定如何使用。

我已經使用此代碼成功讀取了mongodb。

from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from datetime import datetime, timedelta

import pendulum

local_tz = pendulum.timezone("Europe/Amsterdam")

def function1():
    print("hello")
    import pymongo
    from pymongo import MongoClient
    client=MongoClient("mongodb://rpa_task:rpa_task123@ds141641.mlab.com:41641/rpa_task")

    mydb = client['rpa_task']
    collect2 = mydb['business_process_mgts']
    cursor=collect2.find({"process.id":"ross1335_testingpurchase_1915"})
    for i in cursor:
        print(i['sequenceFlow'])



default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'start_date': datetime(2019, 07, 8,  tzinfo=local_tz),
    'email': ['shubhamkalyankari01@gmail.com'],
    'email_on_failure': True,
    'email_on_retry': True,
    'retries': 3,

        'schedule_interval': '@hourly',
    'retry_delay': timedelta(seconds=5),
}

dag = DAG('mongo1.py', default_args=default_args)

t1=PythonOperator(dag=dag,
     task_id='t1',
     provide_context=False,
     python_callable=function1,)


it is reading the mongo documents successfully.

您一切順利。 從這里您可以采取2種方法

  1. 繼續使用PythonOperator :您可以很好地修改python_callable以適應所需的邏輯:

    睡眠-喚醒-滿足測試條件? -標記成功/回去睡覺


  1. 使用自定義Sensor :擴展Airflow的BaseSensorOperator來在poke()函數中定義相同的睡眠/等待邏輯。 如果您打算使用傳感器,請確保查看一下mode參數,以免最終陷入僵局

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM