Как запустить асинхронную функцию в воздушном потоке?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как запустить асинхронную функцию в воздушном потоке?

Сообщение Anonymous »

Я пишу задачу воздушного потока, чтобы прочитать большой CSV и сохранить его в базе данных PostgreSQL.
Я нашел этот пакет AsyncpG, в котором функция копирования работает намного быстрее, чем любые другие пакеты. Тем не менее, это асинхронно, и я не знаю, как включить его в воздушный поток.
Вот пример кода: < /p>

from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from datetime import datetime, timedelta
from pandas import DataFrame
import asyncpg

async def to_sql(dataframe, table_name, schema_name='public', timeout=None, truncate=False):
connection = await asyncpg.connect(user='postgres', host='host.docker.internal', database='quantaxis', password='123456')
result = await connection.copy_records_to_table(
table_name,
records=dataframe.values.tolist(),
columns=shared_columns,
schema_name=schema_name,
timeout=timeout)
await connection.close()
return result

default_args = {
'owner': 'Airflow',
'depends_on_past': False,
'start_date': datetime(2020, 1, 1),
'retries': 1,
'retry_delay': timedelta(minutes=1),
}

dag = DAG('pythonexp2123', default_args=default_args, schedule_interval=timedelta(days=1))

async def save_file_to_database(ds):
df = pd.read_csv("data{0}.csv".format(ds))
r = await to_sql(df, 'test')
return r

t1 = PythonOperator(
task_id='pushing_task',
provide_context=True,
python_callable=save_file_to_database,
dag=dag
)

t1
< /code>

Когда я его запускаю, он вернет ошибку: < /p>

Can't Pickle Object

< /code>

Как я могу изменить функцию, чтобы этот DAG работал? Я все еще хочу использовать пакет Asyncpg из -за его скорости.


Подробнее здесь: https://stackoverflow.com/questions/602 ... in-airflow
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • ModuleNotFoundError: в воздушном потоке Apache нет модуля с именем «Pandas»
    Anonymous » » в форуме Python
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous
  • Получение зависимостей задач оператора в воздушном потоке
    Anonymous » » в форуме Python
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Получение зависимостей задачи оператора в воздушном потоке
    Anonymous » » в форуме Python
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Не могу импортировать мои местные модули Python в воздушном потоке
    Anonymous » » в форуме Python
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Как установить Dynamic execution_timeout для задачи в воздушном потоке с помощью GkePodoperator?
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»