【问题标题】:Unable to write to file in Python when using Flask in mod_wsgi在 mod_wsgi 中使用 Flask 时无法在 Python 中写入文件
【发布时间】:2015-11-22 14:17:01
【问题描述】:

我正在 mod_wsgi 3.4 上使用 Python 2.7.6 运行 Flask 应用程序。操作系统是 Ubuntu 14.04。我无法写入文件。以下是我正在使用的代码:

if __name__ == "__main__":
    f = open('/var/www/jcapp/foobar', 'r+')
    f.write('hello world')
    f.close()
    jcapp.run()

Apache 站点配置文件:

<VirtualHost *:80>
ServerName mysite.co
 WSGIDaemonProcess jcapp
 WSGIScriptAlias / /var/www/jcapp/jcapp.wsgi
 <Directory /var/www/jcapp/>
        WSGIProcessGroup jcapp
    WSGIApplicationGroup %{GLOBAL}
    Order deny,allow
    Allow from all
 </Directory>
WSGIScriptAlias /notify /var/www/jcapp/jcapp.wsgi
<Directory /var/www/jcapp/>
    WSGIProcessGroup jcapp
    WSGIApplicationGroup %{GLOBAL}
    Order allow,deny
    Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined

谁能告诉我哪里出错了?

【问题讨论】:

  • www-data 用户是否对该目录具有写入权限?
  • 是的。出于测试目的,我授予 chmod 777 访问 jcapp 目录和 foobar 文件的权限。
  • 能否包含 Apache2 站点配置文件?您使用的是什么操作系统?
  • 将其添加到问题描述本身中。
  • 嗯...将代码移出if __name__ == "__main__": 块?

标签: python apache flask mod-wsgi


【解决方案1】:

只有在 __name__ == '__main__' 时才写入文件,当您使用 mod_wsgi 而不是 python app.py 运行时不会写入文件。

将代码移到 __name__ 保护之外。

如果您需要在运行应用程序之前进行一些设置,请使用单独的入口点。将 mod_wsgi 指向此入口点。

wsgi_app.py:

from myapp import jcapp as application

with open('/var/www/jcapp/foobar', 'w') as f:
    f.write('hello world')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    • 2016-01-25
    • 2022-11-17
    • 2013-09-23
    • 2017-12-31
    相关资源
    最近更新 更多