首页 > 解决方案 > 当我设置 TZ 环境变量时,为什么 dateparser 在我的 Flask 应用程序中停止工作?

问题描述

为了弄清楚为什么 dateparser(0.7.6 和 1.0.0)不能在 Python 下的 Flask(Flask 1.1.2,Werkzeug 1.0.1)中工作,我将一个更大的 Flask 应用程序缩减到了基本要素3.8.5 在 Windows 10 中。

运行.py

from mytest import app as _application

def application(environ, start_response):
    return _application(environ, start_response)

if __name__ == '__main__':
    from werkzeug.serving import run_simple
    run_simple('localhost', 5003, application, use_reloader=True, use_debugger=True, threaded=True, use_evalex=True)

我的测试.py

import os, dateparser, time
from flask import Flask

app = Flask(__name__)
# os.environ['TZ'] = 'UTC'

@app.route('/')
def date_test():
    parsed = dateparser.parse('01/13/2021')
    return 'Date parse results are: {}'.format(parsed)

此应用程序运行良好 - 转到http://127.0.0.1:5003会产生“日期解析结果为:2021-01-13 00:00:00

但是,如果我在 mytest.py ( os.environ['TZ'] = 'UTC') 中取消注释第 5 行,dateparser 会突然停止工作,并且 URL 返回“日期解析结果为:无

我发现有一些方法可以缓解它:

  1. 在 run.py 中,将from mytest import app as _application行移到application函数中
  2. 在 mytest.py 中,将os.environ['TZ']...行移到date_test函数中

但我真的不明白为什么问题会首先发生,或者为什么这两个“解决方案”中的任何一个实际上都能解决问题。

我错过了什么?

标签: pythondateparser

解决方案


推荐阅读