Google cloud platform GCP Composer-气流Web服务器持续关闭
我正在使用GCP Composer和最新的图像版本Composer-1.16.1-airflow-1.10.15 由于缺少一些缓存文件,我的Web服务器有时会死掉Google cloud platform GCP Composer-气流Web服务器持续关闭,google-cloud-platform,airflow,google-cloud-composer,Google Cloud Platform,Airflow,Google Cloud Composer,我正在使用GCP Composer和最新的图像版本Composer-1.16.1-airflow-1.10.15 由于缺少一些缓存文件,我的Web服务器有时会死掉 {cli.py:1050} ERROR - [Errno 2] No such file or directory 有人知道怎么解决吗 其他信息: 工人: 节点计数3磁盘大小(GB)20机器类型n1-standard-1 Web服务器配置: 机器类型composer-n1-webserver-8(8个vCPU,7.6 GB内存)
{cli.py:1050} ERROR - [Errno 2] No such file or directory
有人知道怎么解决吗
其他信息: 工人: 节点计数3磁盘大小(GB)20机器类型n1-standard-1 Web服务器配置: 机器类型composer-n1-webserver-8(8个vCPU,7.6 GB内存) 配置覆盖:
更新27.04.2021 我设法找到了杀死网络服务器的地方
GCP Composer正在使用Cellery Executor under-soo进行检查,它试图读取一些已被工作人员删除的缓存文件?我找到了!aa我将向GCP Composer团队报告错误 因此,如果config webserver.reload_on_plugin_change=True,则cli将进入该部分: 它通过调用os.walk(settings.PLUGINS\u FOLDER)函数生成要检查的文件 与此同时,gcsfuse决定删除这些文件的一部分 发生错误-找不到文件 因此,禁用webserver.reload_on_plugin_更改会使工作正常-但是这个选项非常方便,所以我将为谷歌创建错误通知单
# if we should check the directory with the plugin,
if self.reload_on_plugin_change:
# compare the previous and current contents of the directory
new_state = self._generate_plugin_state()
# If changed, wait until its content is fully saved.
if new_state != self._last_plugin_state:
self.log.debug(
'[%d / %d] Plugins folder changed. The gunicorn will be restarted the next time the '
'plugin directory is checked, if there is no change in it.',
num_ready_workers_running, num_workers_running
)
self._restart_on_next_plugin_check = True
self._last_plugin_state = new_state
elif self._restart_on_next_plugin_check:
self.log.debug(
'[%d / %d] Starts reloading the gunicorn configuration.',
num_ready_workers_running, num_workers_running
)
self._restart_on_next_plugin_check = False
self._last_refresh_time = time.time()
self._reload_gunicorn()
def _generate_plugin_state(self):
"""
Generate dict of filenames and last modification time of all files in settings.PLUGINS_FOLDER
directory.
"""
if not settings.PLUGINS_FOLDER:
return {}
all_filenames = []
for (root, _, filenames) in os.walk(settings.PLUGINS_FOLDER):
all_filenames.extend(os.path.join(root, f) for f in filenames)
plugin_state = {f: self._get_file_hash(f) for f in sorted(all_filenames)}
return plugin_state