0

当我问这个问题时,基本上同样的事情又发生了。然而,这一次我不能再做对了。我再次尝试了 Burhan Khalid 的答案,但又遇到了同样的错误。我还尝试再次从备份中复制粘贴 zoneinfo 文件夹,但这次它没有修复我的错误。

Django 版本 = 1.4.5

芹菜版本 = 3.0.8

Django-Celery 版本 = 3.0.6

pytz 的版本 = 2013b(与我正在下载的文件相同)

操作系统 = Mac 山狮


尝试1:

  1. 清除 zoneinfo 文件夹 (/usr/share/zoneinfo/)
  2. 将 tar gz 文件粘贴到文件夹 (tzdata2013b.tar.gz)
  3. 使用 Burhan Khalid 提供的命令提取 tar gz 文件
  4. 创建 Burhan Khalid 提供的脚本
  5. 运行脚本

结果:

ValueError: Incorrect timezone setting: Europe/Amsterdam when trying to run celery beat.

当我检查 zoneinfo 文件夹中确实没有名为 Europ 的文件夹时,之前有一个文件夹


尝试2:

  1. 不要清除 zoneinfo 文件夹(我从上面尝试之前所做的备份中将其放回)
  2. 将 tar gz 文件粘贴到文件夹 (tzdata2013b.tar.gz)
  3. 使用 Burhan Khalid 提供的命令提取 tar gz 文件
  4. 在 zoneinfo 文件夹中创建 Burhan Khalid 提供的脚本
  5. 运行脚本

结果 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:

  1. 再次恢复备份 zoneinfo 文件夹
  2. 在桌面上创建单独的文件夹
  3. 将 tar gz 文件和脚本粘贴到桌面上的新文件夹中
  4. 使用命令解压 tar gz 文件
  5. 执行脚本

结果 3:

第 3 步和第 5 步没有给出错误或异常输出

尝试运行 celery beat 仍然会导致文件损坏错误


问题 我在这里做错了什么。我似乎无法弄清楚这一点......


编辑

所以我做了一些更多的挖掘,发现了以下内容:

  1. 如果我通过工头运行而不是通过 Procfile 运行相同的命令,即使它是 Procfile 中的唯一命令,我也不会收到错误
  2. 错误的文件描述符错误意味着 Python尝试关闭已经关闭的文件而不是文件损坏

这使我得出结论,在使用 Procfile 时,工头中的某些东西会强制文件在正确关闭之前关闭……想法?

4

0 回答 0