How can I handle static files using Pappon webapp2 in Heroku?

Now I am moving my small Google App Engine application to the Heroku platform. I actually do not use Bigtable, but webapp2significantly reduces the cost of migration.

Now I am stuck in processing static files.

Are there any good practices? If yes, bring me there, please.

Thanks in advance.

EDIT

Well, now I use pastefor my WSGI server. And it paste.StaticURLParser()should be what I need to implement a static file handler. However, I do not know how to integrate it with webapp2.WSGIApplication(). Can anyone help me?

Perhaps I need to override the class webapp2.RequestHandlerto load correctly paste.StaticURLParser();

import os
import webapp2
from paste import httpserver

class StaticFileHandler(webapp2.RequestHandler):
    u"""Static file handler"""

    def __init__(self):
        # I guess I need to override something here to load
        # `paste.StaticURLParser()` properly.
        pass

app = webapp2.WSGIApplication([(r'/static', StaticFileHandler)], debug=True)


def main():
    port = int(os.environ.get('PORT', 5000))
    httpserver.serve(app, host='0.0.0.0', port=port)

if __name__ == '__main__':
    main()

Any help would be appreciated!

+5
3

, .

, - , .

from paste.urlparser import StaticURLParser
from paste.cascade import Cascade
from paste import httpserver
import webapp2
import socket


class HelloWorld(webapp2.RequestHandler):
    def get(self):
        self.response.write('Hello cruel world.')

# Create the main app
web_app = webapp2.WSGIApplication([
    ('/', HelloWorld),
])

# Create an app to serve static files
# Choose a directory separate from your source (e.g., "static/") so it isn't dl'able
static_app = StaticURLParser("static/")

# Create a cascade that looks for static files first, then tries the webapp
app = Cascade([static_app, web_app])

def main():
    httpserver.serve(app, host=socket.gethostname(), port='8080')

if __name__ == '__main__':
    main()
+6

, nginx .

def main():
  application = webapp2.WSGIApplication(routes, config=_config, debug=DEBUG)
  if DEBUG:
    # serve static files on development
    static_media_server = StaticURLParser(MEDIA_ROOT)
    app = Cascade([static_media_server, application])
    httpserver.serve(app, host='127.0.0.1', port='8000')
else:
    httpserver.serve(application, host='127.0.0.1', port='8000')
+2

, DirectoryApp . , AppEngine. "" src, , HTML ( - ): http:.. localhost: 8080/static/js/jquery.js

static_app = DirectoryApp("static")

# Create a cascade that looks for static files first, then tries the webapp
app = Cascade([static_app,wsgi_app])

httpserver.serve(app, host='0.0.0.0',
                 port='8080')
+2

All Articles