我们正在使用 astropy 来执行在 Dask 中在单个节点或集群上运行的大型 SKA 模拟。我们在计算中同时使用 Time 和 astroplan.Observer。在某些情况下,我们会看到访问 IERS 数据时出现错误。例如:
rascil/processing_components/visibility/base.py:275: in create_blockvisibility
570 from astroplan import Observer
571 /usr/local/lib/python3.7/site-packages/astroplan/__init__.py:32: in <module>
572 get_IERS_A_or_workaround()
573 /usr/local/lib/python3.7/site-packages/astroplan/utils.py:57: in get_IERS_A_or_workaround
574 if IERS_A_in_cache():
575 /usr/local/lib/python3.7/site-packages/astroplan/utils.py:78: in IERS_A_in_cache
576 with _open_shelve(urlmapfn, True) as url2hash:
577 /usr/local/lib/python3.7/site-packages/astroplan/utils.py:322: in _open_shelve
578 shelf = shelve.open(shelffn, protocol=2)
579 /usr/local/lib/python3.7/shelve.py:243: in open
580 return DbfilenameShelf(filename, flag, protocol, writeback)
581 /usr/local/lib/python3.7/shelve.py:227: in __init__
582 Shelf.__init__(self, dbm.open(filename, flag), protocol, writeback)
583 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
584 > return mod.open(file, flag, mode)
585 E _gdbm.error: [Errno 11] Resource temporarily unavailable
586 /usr/local/lib/python3.7/dbm/__init__.py:94: error
我们的解释是,这是由多个 Dask 工作人员试图访问同一个缓存文件引起的。每当在同一节点上使用多个进程或跨集群访问共享挂载点的进程时,都会发生这种情况。串行执行的相同功能不会导致此错误。
对于解决方法,我们尝试了以下方法:
iers.conf.auto_max_age = None
iers.conf.remote_timeout = 100.0
data.conf.download_cache_lock_attempts = 10
这些都没有帮助。我们仍然看到相同的 gdbm 错误。你能提供什么建议吗?
谢谢。