首页 > 解决方案 > 为什么我使用 Airflow 的 LocalExecutor 得到 ConnectionRefusedError?

问题描述

当尝试使用命令启动 Airflow 的调度程序时,如果是airflow scheduler,我会收到以下错误:executor = LocalExecutorairflow.cfg

  File "/usr/local/lib/python3.6/site-packages/airflow/executors/local_executor.py", line 92, in run
    key, command = self.task_queue.get()
  File "<string>", line 2, in get
  File "/usr/local/lib/python3.6/multiprocessing/managers.py", line 753, in _callmethod
    self._connect()
  File "/usr/local/lib/python3.6/multiprocessing/managers.py", line 740, in _connect
    conn = self._Client(self._token.address, authkey=self._authkey)
  File "/usr/local/lib/python3.6/multiprocessing/connection.py", line 487, in Client
    c = SocketClient(address)
  File "/usr/local/lib/python3.6/multiprocessing/connection.py", line 614, in SocketClient
    s.connect(address)
ConnectionRefusedError: [Errno 61] Connection refused

蟒蛇:3.6.13

气流:1.10.15(安装了它的约束)

操作系统:FreeBSD 12

标签: pythonairflowfreebsdairflow-scheduler

解决方案


这是因为在 FreeBSD 上,TCP 套接字的默认接受队列非常短(128),所以如果一个套接字有很多连接,而服务器accept()速度不够快,内核将向多余的请求发送 TCP RST。

增加队列的长度有助于防止这种情况:

sysctl kern.ipc.soacceptqueue=1024


推荐阅读