I\xe2\x80\x99m 设置一个分布式 Airflow 集群,其中除了 celery 工作线程之外的所有其他内容都在一台主机上运行,并且处理在多台主机上完成。Airflow2.0 设置是使用 Airflow 文档https://airflow.apache.org/docs/apache-airflow/stable/docker-compose.yaml中给出的 yaml 文件进行配置的。在我最初的测试中,当我在同一主机上运行所有内容时,架构可以很好地工作。问题是,如何在远程主机上启动 celery 工作程序?
\n到目前为止,我尝试创建上述 docker-compose 的精简版本,其中我只在工作主机上启动 celery 工作人员,而没有其他任何东西。但我遇到了数据库连接的一些问题。在修剪版本中,我更改了 URL,以便它们指向运行 db 和 redis 的主机。
\ndags、日志、插件和 postgresql 数据库位于所有主机都可见的共享驱动器上。
\n我应该如何进行配置?有什么想法要检查什么吗?连接等?\nCelery 工作人员 docker-compose 配置:
\n---\nversion: \'3\'\nx-airflow-common:\n &airflow-common\n image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.1.0}\n environment:\n &airflow-common-env\n AIRFLOW_UID: 50000\n AIRFLOW_GID: 50000\n AIRFLOW__CORE__EXECUTOR: CeleryExecutor\n AIRFLOW__CORE__SQL_ALCHEMY_CONN: \npostgresql+psycopg2://airflow:airflow@airflowhost.example.com:8080/airflow\n AIRFLOW__CELERY__RESULT_BACKEND: db+postgresql://airflow:airflow@airflow@airflowhost.example.com:8080/airflow\n AIRFLOW__CELERY__BROKER_URL: redis://:@airflow@airflowhost.example.com:6380/0\n AIRFLOW__CORE__FERNET_KEY: \'\'\n AIRFLOW__CORE__DAGS_ARE_PAUSED_AT_CREATION: \'true\'\n AIRFLOW__CORE__LOAD_EXAMPLES: \'true\'\n AIRFLOW__API__AUTH_BACKEND: \'airflow.api.auth.backend.basic_auth\'\n REDIS_PORT: 6380\n volumes:\n - /airflow/dev/dags:/opt/airflow/dags\n - /airflow/dev/logs:/opt/airflow/logs\n - /airflow/dev/plugins:/opt/airflow/plugins\n user: "${AIRFLOW_UID:-50000}:${AIRFLOW_GID:-50000}"\nservices:\n airflow-remote-worker:\n <<: *airflow-common\n command: celery worker\n …
Run Code Online (Sandbox Code Playgroud) 我正在编写一个基于kivy的图形应用程序,我可以动态地将节点添加到绘图区域,然后使用有向线(=边缘)连接它们.节点可以在绘图区域内拖动,边缘应始终与它们保持连接.
Edge类派生自Widget类.它的图形表示由两部分组成,即线本身(=线)和线尖(=三角形).绘制"边"窗口小部件时,首先会对其画布进行平移和旋转,然后将边缘的尖端绘制到画布上.之后,画布旋转回原始位置,线条部分被绘制到canvas.after.
移动节点时,将清除Edge小部件的画布,并再次绘制图形演示.但是,这不符合我的计划.
如果我在Edge类的draw方法的开头使用self.canvas.clear(),则不会删除旧行,并且我在画布上获得多行.
如果我使用self.canvas.after.clear(),我会得到一个完全混乱的绘制区域视图,因为clear方法也会从canvas.after中删除PopMatrix指令.
如何从canvas.after中删除该行的图形表示?有没有更好的方法呢?
我的Edge类的Kivy文件:
<Edge>:
id: ed
size_hint: None, None
canvas.before:
Color:
rgb: 0.9, 0.1, 0.1
PushMatrix
Translate:
x: ed.translate_x
y: ed.translate_y
Rotate:
angle: ed.rot_angle
origin: ed.rot_origin_x, ed.rot_origin_y
canvas.after:
PopMatrix
Run Code Online (Sandbox Code Playgroud)
更新 我改变了我的方法,现在我在画布上绘制所有内容,而不是绘制到画布和canvas.after.现在我得到了我想要的结果,但是如果有人知道如何删除单个画布说明,那么知道它会很好.
我的源数据文件是每 15 分钟捕获一次的天气雷达图像。我正在尝试对中间帧进行平滑插值,并尝试从上次测量开始推断运动。
到目前为止,我的方法是从两个连续图像计算密集光流场(cv2.calcOpticalFlowFarneback),然后使用光流和第一张图像插入(cv2.remap)帧。我还使用相同的方法进行了虚拟运动外推。
在示例视频中,您可以看到这种方法的注意事项,在插值期间,插值帧和测量帧之间存在明显的中断,并且在外插部分(从 8 秒开始)完全迷幻。我尝试平滑光学流场和它有一个小的影响,但结果基本保持不变。
我想对接下来要研究的方法有一些指导,并且是否有针对此类问题的任何opencv特定解决方案。
问题一:如何让插值更流畅?问题二:运动时间外推的正确方法是什么?
python opencv opticalflow spatial-interpolation extrapolation
我正在使用官方 Docker 映像运行分布式 Airflow 2.4.0 设置。所有容器都使用相同的.env
文件和相同版本的 Airflow 镜像。当我登录到 Airflow 容器之一时,我收到此警告:
/home/airflow/.local/lib/python3.7/site-packages/airflow/configuration.py:545: DeprecationWarning: The sql_alchemy_conn option in [core] has been moved to the sql_alchemy_conn option in [database] - the old setting has been used, but please update your config.
option = self._get_environment_variables(deprecated_key, deprecated_section, key, section)
/home/airflow/.local/lib/python3.7/site-packages/airflow/configuration.py:545: DeprecationWarning: The auth_backend option in [api] has been renamed to auth_backends - the old setting has been used, but please update your config.
option = self._get_environment_variables(deprecated_key, deprecated_section, key, section)
/home/airflow/.local/lib/python3.7/site-packages/airflow/configuration.py:367: FutureWarning: The auth_backends …
Run Code Online (Sandbox Code Playgroud) 我是 Airflow 的新手,我正在尝试了解如何正确使用调度程序。基本上我想以与使用 cron 相同的方式安排任务。有一个任务需要每 5 分钟运行一次,我希望它在我将 DAG 文件添加到 dags 目录或对 dag 文件进行一些更改后,在下一个甚至 5 分钟的时间段开始运行。
我知道 DAG 在 schedule_interval 结束时运行。如果我添加一个新的 DAG 并使用 start_date=days_ago(0) ,那么我将从当天开始进行不必要的运行。在 dag 文件上硬编码一些特定的开始日期也感觉很愚蠢,即 start_date=datetime(2019, 9, 4, 10, 1, 0, 818988)。我的方法是错误的还是需要设置 start_date 的特定原因?