You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by "Rafael Gomes Fernandes (JIRA)" <ji...@apache.org> on 2016/12/02 19:34:58 UTC
[jira] [Created] (AIRFLOW-668) Configuration parsing doesn't work
properly with python 3
Rafael Gomes Fernandes created AIRFLOW-668:
----------------------------------------------
Summary: Configuration parsing doesn't work properly with python 3
Key: AIRFLOW-668
URL: https://issues.apache.org/jira/browse/AIRFLOW-668
Project: Apache Airflow
Issue Type: Bug
Environment: Airflow version: v1.7.1.3
- Airflow components: webserver and scheduler with a postgres database and CeleryExecutor
- Python Version: 3.4.5
Reporter: Rafael Gomes Fernandes
The problem is: if you use python3 and the '_cmd' on the config file airflow will not start due the error:
File "~/test/env/airflow3/lib/python3.4/site-packages/airflow/configuration.py", line 447, in _validate
"sqlite" in self.get('core', 'sql_alchemy_conn')):
TypeError: 'str' does not support the buffer interface
To reproduce the problem change the following line on airflow.cfg:
sql_alchemy_conn_cmd = echo sqlite:////~/airflow/airflow.db
The solution is change the following run_command method's line on configuration.py:
command.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
By setting the universal_newlines to true the file objects stdout and stderr are opened as text files and treated as string in python 2 and python 3 avoiding the error.
run_command with universal_newlines=True:
When using python 3 output type: <class 'str'> and no error.
When using python 2 output type: <type 'str'> and no error.
run_command as it is :
When using python 3 output type: <class 'bytes'> and TypeError.
When using python 2 output type: <type 'str'> and no error.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)