Python 显示错误';非类型';当运行使用pubsubpullsensor的Apache气流DAG时,对象不可编辑

Python 显示错误';非类型';当运行使用pubsubpullsensor的Apache气流DAG时,对象不可编辑,python,airflow,Python,Airflow,运行dags时出现错误“NoneType”对象不可编辑。我在这个dag中使用了PubSubPullSensor。我的dags代码如下: from airflow import DAG import datetime from datetime import timedelta from airflow.operators.bash_operator import BashOperator from airflow.providers.google.cloud.sensors.pubsub imp

运行dags时出现错误“NoneType”对象不可编辑。我在这个dag中使用了PubSubPullSensor。我的dags代码如下:

from airflow import DAG
import datetime
from datetime import timedelta
from airflow.operators.bash_operator import BashOperator
from airflow.providers.google.cloud.sensors.pubsub import PubSubPullSensor

DEFAULT_DAG_ARGS = {
    'owner': 'linkaja_dataeng',
    'depends_on_past': False,
    'start_date': datetime.datetime(2020, 9, 10, 0, 0),
    'email': ['msaipulr@xxx.com'],
    'email_on_failure': True,
    'email_on_retry': True,
    'retries': 0,
    'retry_delay': timedelta(minutes=2)
}

dag = DAG(
    'pubsub_pullsensor',
    schedule_interval='@daily',
    default_args=DEFAULT_DAG_ARGS)

subscription = 'DataInfra-subscription1'
gcp_conn_id = 'airflow-jobs-connection'
project_id = 'project-data-platform-de'


#define task

task_start = BashOperator(
    task_id="start_task",
    bash_command='echo start',
    dag=dag
)

pull_message = PubSubPullSensor(
    task_id="pull_message_pubsub",
    ack_messages=True,
    project_id=project_id,
    gcp_conn_id=gcp_conn_id,
    subscription=subscription,
    dag=dag
)

task_end = BashOperator(
    task_id="end_task",
    bash_command='echo end',
    dag=dag
)

task_start >> pull_message >> task_end
我已经在pubsub谷歌云中创建了pubsub主题和订阅。 我还在pubsub主题中发布了5到10条消息,然后运行这个dags代码,但显示相同的错误

日志错误消息如下所示:

*** Reading local file: /usr/local/airflow/logs/pubsub_pullsensor/pull_message_pubsub/2020-09-28T06:04:52.185745+00:00/1.log
Production 2020-09-28 06:05:17,127 {taskinstance.py:655} INFO - Dependencies all met for <TaskInstance: pubsub_pullsensor.pull_message_pubsub 2020-09-28T06:04:52.185745+00:00 [queued]>
Production 2020-09-28 06:05:17,221 {taskinstance.py:655} INFO - Dependencies all met for <TaskInstance: pubsub_pullsensor.pull_message_pubsub 2020-09-28T06:04:52.185745+00:00 [queued]>
Production 2020-09-28 06:05:17,221 {taskinstance.py:866} INFO - 
--------------------------------------------------------------------------------
Production 2020-09-28 06:05:17,222 {taskinstance.py:867} INFO - Starting attempt 1 of 1
Production 2020-09-28 06:05:17,222 {taskinstance.py:868} INFO - 
--------------------------------------------------------------------------------
Production 2020-09-28 06:05:17,260 {taskinstance.py:887} INFO - Executing <Task(PubSubPullSensor): pull_message_pubsub> on 2020-09-28T06:04:52.185745+00:00
Production 2020-09-28 06:05:17,275 {standard_task_runner.py:53} INFO - Started process 14240 to run task
Production 2020-09-28 06:05:17,494 {logging_mixin.py:112} INFO - Running %s on host %s <TaskInstance: pubsub_pullsensor.pull_message_pubsub 2020-09-28T06:04:52.185745+00:00 [running]> 243145dffd6e
Production 2020-09-28 06:05:17,586 {logging_mixin.py:112} INFO - [2020-09-28 06:05:17,586] {{pubsub.py:488}} INFO - Pulling max 5 messages from subscription (path) projects/project-data-platform-de/subscriptions/DataInfra-subscription1
Production 2020-09-28 06:05:17,587 {taskinstance.py:1128} ERROR - 'NoneType' object is not iterable
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/airflow/models/taskinstance.py", line 966, in _run_raw_task
    result = task_copy.execute(context=context)
  File "/usr/local/lib/python3.7/site-packages/airflow/providers/google/cloud/sensors/pubsub.py", line 143, in execute
    super().execute(context)
  File "/usr/local/lib/python3.7/site-packages/airflow/sensors/base_sensor_operator.py", line 107, in execute
    while not self.poke(context):
  File "/usr/local/lib/python3.7/site-packages/airflow/providers/google/cloud/sensors/pubsub.py", line 156, in poke
    return_immediately=self.return_immediately,
  File "/usr/local/lib/python3.7/site-packages/airflow/providers/google/common/hooks/base_google.py", line 356, in inner_wrapper
    return func(self, *args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/airflow/providers/google/cloud/hooks/pubsub.py", line 497, in pull
    metadata=metadata,
  File "/usr/local/lib/python3.7/site-packages/google/cloud/pubsub_v1/_gapic.py", line 40, in <lambda>
    fx = lambda self, *a, **kw: wrapped_fx(self.api, *a, **kw)  # noqa
  File "/usr/local/lib/python3.7/site-packages/google/pubsub_v1/services/subscriber/client.py", line 1005, in pull
    metadata = tuple(metadata) + (
TypeError: 'NoneType' object is not iterable
Production 2020-09-28 06:05:17,591 {taskinstance.py:1185} INFO - Marking task as FAILED.dag_id=pubsub_pullsensor, task_id=pull_message_pubsub, execution_date=20200928T060452, start_date=20200928T060517, end_date=20200928T060517
Production 2020-09-28 06:05:17,993 {logging_mixin.py:112} INFO - [2020-09-28 06:05:17,992] {{email.py:131}} INFO - Sent an alert email to ['msaipul@xxx.com']
Production 2020-09-28 06:05:26,966 {logging_mixin.py:112} INFO - [2020-09-28 06:05:26,966] {{local_task_job.py:103}} INFO - Task exited with return code 1
***正在读取本地文件:/usr/local/aiffair/logs/pubsub\u pullsensor/pulsub\u message\u pubsub/2020-09-28T06:04:52.185745+00:00/1.log
生产2020-09-28 06:05:17127{taskinstance.py:655}信息-所有依赖项都满足
生产2020-09-28 06:05:17221{taskinstance.py:655}信息-所有依赖项都满足
生产2020-09-2806:05:17221{taskinstance.py:866}INFO-
--------------------------------------------------------------------------------
生产2020-09-28 06:05:17222{taskinstance.py:867}信息-开始尝试第1次,共1次
生产2020-09-2806:05:17222{taskinstance.py:868}INFO-
--------------------------------------------------------------------------------
生产日期2020-09-2806:05:17260{taskinstance.py:887}INFO-执行日期2020-09-28T06:04:52.185745+00:00
生产2020-09-28 06:05:17275{standard_task_runner.py:53}信息-已启动流程14240以运行任务
生产2020-09-28 06:05:17494{logging_mixin.py:112}信息-正在主机%s 243145dffd6e上运行%s
生产2020-09-2806:05:17586{logging_mixin.py:112}INFO-[2020-09-2806:05:17586]{{pubsub.py:488}}INFO-从订阅(路径)项目/项目数据平台de/subscriptions/DataInfra-subscription1获取最多5条消息
生产2020-09-28 06:05:17587{taskinstance.py:1128}错误-'NoneType'对象不可编辑
回溯(最近一次呼叫最后一次):
文件“/usr/local/lib/python3.7/site packages/afflow/models/taskinstance.py”,第966行,在“运行”任务中
结果=任务\复制.执行(上下文=上下文)
文件“/usr/local/lib/python3.7/site packages/afflow/providers/google/cloud/sensors/pubsub.py”,第143行,在execute中
super().execute(上下文)
文件“/usr/local/lib/python3.7/site packages/afflow/sensors/base\u sensor\u operator.py”,执行中的第107行
而不是self.poke(上下文):
文件“/usr/local/lib/python3.7/site-packages/aiffort/providers/google/cloud/sensors/pubsub.py”,第156行,在poke中
return\u立即=self.return\u立即,
文件“/usr/local/lib/python3.7/site packages/afflow/providers/google/common/hooks/base_google.py”,第356行,位于内部包装中
返回函数(self、*args、**kwargs)
文件“/usr/local/lib/python3.7/site packages/afflow/providers/google/cloud/hooks/pubsub.py”,第497行,在pull中
元数据=元数据,
文件“/usr/local/lib/python3.7/site packages/google/cloud/pubsub_v1/_gapic.py”,第40行,在
fx=lambda self,*a,**kw:wrapped_fx(self.api,*a,**kw)35;noqa
文件“/usr/local/lib/python3.7/site packages/google/pubsub_v1/services/subscriber/client.py”,第1005行,拉入
元数据=元组(元数据)+(
TypeError:“非类型”对象不可编辑
生产2020-09-28 06:05:17591{taskinstance.py:1185}信息-将任务标记为失败。dag_id=pubsub_pullsensor,task_id=pull_message_pubsub,execution_date=20200928T060452,start_date=20200928T060517,end_date=20200928T060517
生产2020-09-2806:05:17993{logging_mixin.py:112}INFO-[2020-09-2806:05:17992]{{email.py:131}}INFO-向['msaipul@xxx.com']
生产2020-09-28 06:05:26966{logging_mixin.py:112}INFO-[2020-09-28 06:05:26966]{{local_task_job.py:103}}}INFO-任务退出,返回代码为1
pubsub GCP中的屏幕截图主题和订阅

请帮我解决这个问题。
谢谢

您可以发布完整的异常消息吗?您还可以确认主题和订阅的名称是否正确吗?您可以检查产生此错误的行并共享完整的错误消息吗?我已经添加了日志文件和屏幕截图主题和订阅。谢谢