令人困惑的python datetime.strptime()"与格式不匹配"错误

时间:2016-11-05 06:43:25

标签: python django datetime

我有一个在实时CentOS生产服务器上运行的Django项目。我上次更新了大约9天前的代码,直到今天一切正常。突然间,我开始得到一个令人困惑的错误,没有任何意义。这是我的追溯:

[Fri Nov 04 18:43:00 2016] [error]   File "/usr/lib/tethys/src/tethys_apps/tethysapp/hydroshare_gis/utilities.py", line 1196, in res_has_been_updated
[Fri Nov 04 18:43:00 2016] [error]     db_date_obj = datetime.strptime(db_date.split('+')[0], '%Y-%m-%dT%X.%f')
[Fri Nov 04 18:43:00 2016] [error]   File "/usr/local/lib/python2.7/_strptime.py", line 325, in _strptime
[Fri Nov 04 18:43:00 2016] [error]     (data_string, format))
[Fri Nov 04 18:43:00 2016] [error] ValueError: time data '2016-10-15T15:12:41.787370' does not match format '%Y-%m-%dT%X.%f'

这是抛出错误的函数,很简单:

def res_has_been_updated(db_date, res_date):
    db_date_obj = datetime.strptime(db_date.split('+')[0], '%Y-%m-%dT%X.%f')
    res_date_obj = datetime.strptime(res_date.split('+')[0], '%Y-%m-%dT%X.%f')
    if db_date_obj < res_date_obj:
        return True

    return False

我暂时添加了一些打印语句来仔细检查日期,这就是它们的样子:

2016-06-14T13:30:42.735448+00:00

现在叫我疯了,但我必须不同意这个python解释器......那时数据 匹配格式。我怎么这么肯定? 1)我有眼睛。 2)这在今天之前工作正常(我没有修改代码,输入没有改变)。 3)我将确切的行硬编码到python控制台中,就像datetime.strptime('2016-06-14T13:30:42.735448+00:00'.split('+')[0], '%Y-%m-%dT%X.%f')一样,并且它有效。

虽然我是唯一接触处理此特定项目的代码的开发人员,但还有其他人访问服务器以进行维护和其他活动。我知道最近安装了一些python模块(一个是matplotlib),有人实现了supervisord来处理服务器上的进程控制。虽然我不明白为什么那些会影响标准python调用的有效性。我可以使用任何天才和/或光彩。谢谢。

1 个答案:

答案 0 :(得分:0)

所以我们从服务器上卸载了supervisord,然后错误就消失了。很奇怪。虽然我们仍然不知道为什么supervisord会导致标准的python模块出现故障,我会将问题标记为已回答......我们将向他们寻求进一步的帮助。