如何让Flask和Apache(mod_wsgi)在每次访问页面时更新我的​​数据库查询?

时间:2015-04-23 20:39:22

标签: apache flask

在我的Flask应用程序中,我有一个查询数据库的def。当我更改文件时,SQL,结果没有显示在网页上。当我停止并启动Apache service apache2 restart时(在Debian 7上),然后出现了新的查询结果。

我使用mod_wsgi,v.3.3,Apache 2.2在守护进程模式下运行我的WSGI进程。

我没有使用SQLAlchemy或任何其他ORM,使用pymssql连接语句直接使用SQL。

我正在使用蓝图。

如果touch .wsgi文件,Apache将按预期加载结果。

我不确定Flask-Cache如何帮助我(或任何其他Flask模块)。

WSGIDaemonProcess myapp python-path=/var/www/intranet/application/flask:/var/www/intranet/application/flask/lib/python2.7/site-packages
WSGIProcessGroup myapp
WSGIScriptAlias /myapp/var/www/intranet/intranet.wsgi

<Directory /var/www/intranet>
        WSGIApplicationGroup %{GLOBAL}
        Order allow,deny
        Allow from all
</Directory>

<Location />
        Options FollowSymLinks
        AllowOverride None
        order allow,deny
        allow from all
        AuthType Basic
        AuthName "Subversion Repository"
        Require valid-user
        AuthUserFile /etc/apache2/dav_svn.passwd
        <IfModule mod_php4.c>
                php_flag magic_quotes_gpc Off
                php_flag track_vars On
</IfModule>

我已经阅读了很多内容,https://code.google.com/p/modwsgi/wiki/ReloadingSourceCode,但我不知道这是否是Flask可能已经在中为生产构建的。

如何在不重启Apache的情况下使代码更改生效?

编辑:我的查询在.wsgi文件中为not

1 个答案:

答案 0 :(得分:0)

我最终做的是在我的--bare目录中使用post-receive钩子。

我从这里开始:

http://krisjordan.com/essays/setting-up-push-to-deploy-with-git

并添加了触摸结束。这是我做的:

#!/usr/bin/ruby
#Changed shebang a little from the website version for mine, Debian 7.
# post-receive

#johnny
require 'fileutils'
#


    # 1. Read STDIN (Format: "from_commit to_commit branch_name")
    from, to, branch = ARGF.read.split " "

    # 2. Only deploy if master branch was pushed
    if (branch =~ /master$/) == nil
        puts "Received branch #{branch}, not deploying."
        exit
    end

    # 3. Copy files to deploy directory
    deploy_to_dir = File.expand_path('../deploy')
    `GIT_WORK_TREE="#{deploy_to_dir}" git checkout -f master`
    puts "DEPLOY: master(#{to}) copied to '#{deploy_to_dir}'"

    # 4.TODO: Deployment Tasks
    # i.e.: Run Puppet Apply, Restart Daemons, etc

    #johnny
    FileUtils.touch('/path/to/my/file.wsgi')

我承诺:

git commit -a -m'my commit message'

然后,

git push production master

经过大量阅读,大多数人似乎不喜欢自动更新。在我工作的地方,他们需要立即看到事情。大多数东西都是数据库读取或静态模板,所以我不介意使用&#34; auto&#34;触摸这个特定的应用程序。