У меня проблема с загрузкой файла из кода dagster (установка, а не конвейеры). Скажем, у меня есть следующая структура проекта:
pipelines
-app/
--environments
----schedules.yaml
--repository.py
--repository.yaml
Когда я запускаю da git внутри папки проекта ($cd project && dagit -y app/repository.yaml
), эта папка становится рабочим каталогом, а внутри repository.py
я могу загрузить файл, знающий, что root равен project
# repository.py
with open('app/evironments/schedules.yaml', 'r'):
# do something with the file
Однако, если я настроил расписание, конвейеры в проекте не запустятся. При проверке журналов cron кажется, что строка open
выдает исключение «файл не найден». Мне было интересно, происходит ли это из-за того, что при запуске cron рабочий каталог отличается.
Для контекста я загружаю файл конфигурации с параметрами cron_schedules для каждого конвейера. Кроме того, вот хвостовая часть трассировки стека в моем случае:
File "/home/user/.local/share/virtualenvs/pipelines-mfP13m0c/lib/python3.8/site-packages/dagster/core/definitions/handle.py", line 190, in from_yaml
return LoaderEntrypoint.from_file_target(
File "/home/user/.local/share/virtualenvs/pipelines-mfP13m0c/lib/python3.8/site-packages/dagster/core/definitions/handle.py", line 161, in from_file_target
module = import_module_from_path(module_name, os.path.abspath(python_file))
File "/home/user/.local/share/virtualenvs/pipelines-mfP13m0c/lib/python3.8/site-packages/dagster/seven/__init__.py", line 75, in import_module_from_path
spec.loader.exec_module(module)
File "<frozen importlib._bootstrap_external>", line 783, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/home/user/pipelines/app/repository.py", line 28, in <module>
schedule_builder = ScheduleBuilder(settings.CRON_PRESET, settings.ENV_DICT)
File "/home/user/pipelines/app/schedules.py", line 12, in __init__
self.cron_schedules = self._load_schedules_yaml()
File "/home/user/pipelines/app/schedules.py", line 16, in _load_schedules_yaml
with open(path) as f:
FileNotFoundError: [Errno 2] No such file or directory: 'app/environments/schedules.yaml'