1

我们正在使用 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 错误。你能提供什么建议吗?

谢谢。

4

0 回答 0