当我问这个问题时,基本上同样的事情又发生了。然而,这一次我不能再做对了。我再次尝试了 Burhan Khalid 的答案,但又遇到了同样的错误。我还尝试再次从备份中复制粘贴 zoneinfo 文件夹,但这次它没有修复我的错误。
Django 版本 = 1.4.5
芹菜版本 = 3.0.8
Django-Celery 版本 = 3.0.6
pytz 的版本 = 2013b(与我正在下载的文件相同)
操作系统 = Mac 山狮
尝试1:
- 清除 zoneinfo 文件夹 (/usr/share/zoneinfo/)
- 将 tar gz 文件粘贴到文件夹 (tzdata2013b.tar.gz)
- 使用 Burhan Khalid 提供的命令提取 tar gz 文件
- 创建 Burhan Khalid 提供的脚本
- 运行脚本
结果:
ValueError: Incorrect timezone setting: Europe/Amsterdam when trying to run celery beat.
当我检查 zoneinfo 文件夹中确实没有名为 Europ 的文件夹时,之前有一个文件夹
尝试2:
- 不要清除 zoneinfo 文件夹(我从上面尝试之前所做的备份中将其放回)
- 将 tar gz 文件粘贴到文件夹 (tzdata2013b.tar.gz)
- 使用 Burhan Khalid 提供的命令提取 tar gz 文件
- 在 zoneinfo 文件夹中创建 Burhan Khalid 提供的脚本
- 运行脚本
结果 2:
在第 3 步,我得到以下输出,包括一些错误:
[13:59:07] /usr/share/zoneinfo $ tar xvzf tzdata2013b.tar.gz
x Makefile
x africa: Can't remove already-existing dir
x antarctica: Can't remove already-existing dir
x asia: Can't remove already-existing dir
x australasia
x europe: Can't remove already-existing dir
x northamerica
x southamerica
x pacificnew
x etcetera
x backward
x systemv
x factory
x solar87
x solar88
x solar89
x iso3166.tab
x zone.tab
x leapseconds
x yearistype.sh tar: Error exit
delayed from previous errors.
在第 5 步,我得到以下输出,包括一些错误:
[13:59:13] /usr/share/zoneinfo $ sudo ./the_script.sh
Password:
zic: error reading africa
zic: error reading antarctica
zic: error reading asia
zic: error reading europe
而且我仍然有损坏的文件。
尝试 3:
- 再次恢复备份 zoneinfo 文件夹
- 在桌面上创建单独的文件夹
- 将 tar gz 文件和脚本粘贴到桌面上的新文件夹中
- 使用命令解压 tar gz 文件
- 执行脚本
结果 3:
第 3 步和第 5 步没有给出错误或异常输出
尝试运行 celery beat 仍然会导致文件损坏错误
问题 我在这里做错了什么。我似乎无法弄清楚这一点......
编辑
所以我做了一些更多的挖掘,发现了以下内容:
- 如果我通过工头运行而不是通过 Procfile 运行相同的命令,即使它是 Procfile 中的唯一命令,我也不会收到错误
- 错误的文件描述符错误意味着 Python尝试关闭已经关闭的文件而不是文件损坏
这使我得出结论,在使用 Procfile 时,工头中的某些东西会强制文件在正确关闭之前关闭……想法?