在我的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。
答案 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;触摸这个特定的应用程序。