【问题标题】:SyntaxError for Flask apschedulerFlask 调度程序的语法错误
【发布时间】:2018-07-26 14:28:10
【问题描述】:

我正在尝试在 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 时遇到了同样的问题。我错过了什么吗?

【问题讨论】:

  • @DeepSpace 你是什么意思?
  • Yeo 忽略这一点,我的错,我被 Flask 的调试日志抛弃了。但是,您确定使用 Python 2.7 解释器执行代码吗?
  • 该行包含一个字典理解,这是 Python 2.7 中添加的一个功能。在 Python 2.6 上运行它会导致您向我们展示的语法错误。所以我想你应该仔细检查你的 Python 版本。

标签: python flask amazon-ec2 apscheduler


【解决方案1】:

进一步研究后,我发现在我的烧瓶 wsgi 配置中指定 python 版本不会影响使用哪个 python 来执行我的烧瓶应用程序。

运行此命令会为我的 RHEL VM 提供系统默认值,即 Python 2.6:

$ which python
/usr/bin/python

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    • 2019-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多