adm-ntuh-net/ntuh/dojango/appengine/dojo_serve.py
2024-12-12 10:19:16 +08:00

51 lines
1.7 KiB
Python
Executable file

import os
import wsgiref.handlers
from dojango.appengine import memcache_zipserve
from google.appengine.ext import webapp
# setup the environment
from common.appenginepatch.aecmd import setup_env
setup_env(manage_py_env=True)
from dojango.conf import settings
# creating a handler structure for the zip-files within the release folder
release_dir = '%s/release/%s' % (settings.BASE_MEDIA_ROOT, settings.DOJO_VERSION)
handlers = []
for zip_file in os.listdir(release_dir):
if zip_file.endswith(".zip"):
module = os.path.splitext(zip_file)[0]
handler = [os.path.join(release_dir, zip_file)]
handlers.append(handler)
class FlushCache(webapp.RequestHandler):
"""
Handler for flushing the whole memcache instance.
"""
from google.appengine.ext.webapp.util import login_required
@login_required
def get(self):
from google.appengine.api import memcache
from google.appengine.api import users
if users.is_current_user_admin():
stats = memcache.get_stats()
memcache.flush_all()
self.response.out.write("Memcache successfully flushed!<br/>")
if stats:
self.response.out.write("<p>Memcache stats:</p><p>")
for key in stats.keys():
self.response.out.write("%s: %s<br/>" % (key, stats[key]))
self.response.out.write("</p>")
def main():
application = webapp.WSGIApplication([
('%s/%s/(.*)' % (settings.BUILD_MEDIA_URL, settings.DOJO_VERSION),
memcache_zipserve.create_handler(handlers, max_age=31536000)
),
('%s/_flushcache[/]{0,1}' % settings.BUILD_MEDIA_URL, FlushCache)
], debug=False)
wsgiref.handlers.CGIHandler().run(application)
if __name__ == '__main__':
main()