Flask apscheduler 的语法错误

SyntaxError for Flask apscheduler

我正在尝试在 AWS EC2 上启动 Flask 应用程序,并且正在尝试使用 flask-apscheduler 启用后台线程。但是,在导入库时,我的代码中断了。

/etc/httpd/logs/error_log:

 mod_wsgi (pid=29266): Target WSGI script '/var/www/html/flaskapp/flaskapp.wsgi' cannot be loaded as Python module., referer: http:/$
 mod_wsgi (pid=29266): Exception occurred processing WSGI script '/var/www/html/flaskapp/flaskapp.wsgi'., referer: http:/$
 Traceback (most recent call last):, referer: http://example.com/map-day
 File "/var/www/html/flaskapp/flaskapp.wsgi", line 6, in <module>, referer: http://example.com/map-day
   from flaskapp import app as application, referer: http://example.com/map-day
 File "/var/www/html/flaskapp/flaskapp.py", line 3, in <module>, referer: http://example.com/map-day
   from flask_apscheduler import APScheduler, referer: http://example.com/map-day
 File "/usr/local/lib/python2.7/site-packages/flask_apscheduler/__init__.py", line 17, in <module>, referer: http://example.com$
   from apscheduler.schedulers.base import STATE_PAUSED, STATE_RUNNING, STATE_STOPPED, referer: http://example.com/map-day
 File "/usr/local/lib64/python2.7/site-packages/apscheduler/schedulers/base.py", line 19, in <module>, referer: http:/$
   from apscheduler.jobstores.memory import MemoryJobStore, referer: http://example.com/map-day
 File "/usr/local/lib64/python2.7/site-packages/apscheduler/jobstores/memory.py", line 4, in <module>, referer: http:/$
   from apscheduler.util import datetime_to_utc_timestamp, referer: http://example.com/map-day
 File "/usr/local/lib64/python2.7/site-packages/apscheduler/util.py", line 141, referer: http://example.com/map-day
    values = {k: int(v or 0) for k, v in values.items()}, referer: http://example.com/map-day
                               ^, referer: http://example.com/map-day
SyntaxError: invalid syntax, referer: http://example.com/map-day

在 Internet 上快速搜索显示 similar problems 的结果很少,并且在导入其他库时使用 Python 2.6 的用户体验到了。这些用户被推荐升级到 Python 2.7,之后他们的问题似乎得到了解决。

不过,我正在使用 Python 2.7.14 和 Flask-APScheduler 1.10.1。虽然我肯定可以使用另一个库来进行后台线程处理,但我很想知道我是否遗漏了什么 - 问题是字典理解无法使用 Python 2.6 完成,但我遇到了同样的问题使用2.7.我错过了什么吗?

进一步研究后,我发现在我的 flask wsgi 配置中指定 python 版本 而不是 影响 python 用于执行我的Flask 应用程序。

Running this gives the system default for my RHEL VM which is Python 2.6:

$ which python
/usr/bin/python

虽然我可以更改 python 默认版本或创建一个 venv 并指定要使用的 python,但我已切换到另一个使用 Python 2.7 作为系统默认版本的发行版由于这个以及其他原因。希望这会帮助遇到类似问题的任何人。