need some help in serving static files inside a wsgi apps

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Tool69

    need some help in serving static files inside a wsgi apps

    Hi,

    Until now, I was running my own static site with Python, but I'm in
    need of dynamism.

    After reading some cgi tutorials, I saw Joe Gregorio's old article
    "Why so many Python web frameworks?" about wsgi apps [http://
    bitworking.org/news/Why_so_many_Pyt hon_web_framewo rks] and have a
    question about it. The code he gave works like a charm (I had to make
    a little change because SQLAlchemy has changed since), but how the
    hell can I serve static files (css, js, images, etc.) within an wsgi
    app, ie inside a '/static' directory ?!

    Sorry if my question is a stupid one, but I cannot find an easy way to
    do this. Each tutorial I'm reading out there does not talk about them
    at all. All of my python books didn't mention wsgi either.

    I know I could use web.py, web2py, Cherrypy, Django, Pylons, etc. but
    I'm trying to understand basics of web dev. from their roots.

    thanks in advance for any advice ,

    Kib.
  • Diez B. Roggisch

    #2
    Re: need some help in serving static files inside a wsgi apps

    Tool69 schrieb:
    Hi,
    >
    Until now, I was running my own static site with Python, but I'm in
    need of dynamism.
    >
    After reading some cgi tutorials, I saw Joe Gregorio's old article
    "Why so many Python web frameworks?" about wsgi apps [http://
    bitworking.org/news/Why_so_many_Pyt hon_web_framewo rks] and have a
    question about it. The code he gave works like a charm (I had to make
    a little change because SQLAlchemy has changed since), but how the
    hell can I serve static files (css, js, images, etc.) within an wsgi
    app, ie inside a '/static' directory ?!
    There is a wsgi-app out there that is called "static". Use that.

    And it's the first hit on google "wsgi static"... :)



    Diez

    Comment

    • Diez B. Roggisch

      #3
      Re: need some help in serving static files inside a wsgi apps

      kib schrieb:
      Diez B. Roggisch a écrit :
      >Tool69 schrieb:
      >>Hi,
      >>>
      >>Until now, I was running my own static site with Python, but I'm in
      >>need of dynamism.
      >>>
      >>After reading some cgi tutorials, I saw Joe Gregorio's old article
      >>"Why so many Python web frameworks?" about wsgi apps [http://
      >>bitworking.or g/news/Why_so_many_Pyt hon_web_framewo rks] and have a
      >>question about it. The code he gave works like a charm (I had to make
      >>a little change because SQLAlchemy has changed since), but how the
      >>hell can I serve static files (css, js, images, etc.) within an wsgi
      >>app, ie inside a '/static' directory ?!
      >>
      >There is a wsgi-app out there that is called "static". Use that.
      >>
      >And it's the first hit on google "wsgi static"... :)
      >>
      >http://lukearno.com/projects/static/
      >>
      >Diez
      >
      Hi Diez,
      >
      and thanks for yout help. In fact I already found it but never managed
      to get it work because the static doc says :
      >
      from wsgiref.simple_ server import make_server
      import static
      make_server('lo calhost', 9999, static.Cling('/var/www')).serve_fo rever()
      >
      and inside J.Gregorio's tutorial it is:
      >
      from wsgiref.simple_ server import WSGIServer, WSGIRequestHand ler
      httpd = WSGIServer(('lo calhost', 8080), WSGIRequestHand ler)
      httpd.set_app(u rls.urls)
      >
      It does not use 'make_server()' so how can I adapt it ?
      static.Cling is a wsgi-app. The other code just makes a specific
      wsgi-implementation based server out of it.

      I finally managed to work with static files with a little hack, but it's
      ugly because I'm reading each static file per request.
      How else should that work? Apache does that the same way.

      Diez

      Comment

      • Sebastian 'lunar' Wiesner

        #4
        Re: need some help in serving static files inside a wsgi apps

        -----BEGIN PGP SIGNED MESSAGE-----
        Hash: SHA1

        [ Diez B. Roggisch <deets@nospam.w eb.de]
        >I finally managed to work with static files with a little hack, but it's
        >ugly because I'm reading each static file per request.
        >
        How else should that work? Apache does that the same way.
        I guess, Apache does some kind of memory caching for files, which are often
        requested and small enough to fit into the system memory. May be, that's
        what the OP is referring to ...

        - --
        Freedom is always the freedom of dissenters.
        (Rosa Luxemburg)
        -----BEGIN PGP SIGNATURE-----
        Version: GnuPG v2.0.9 (GNU/Linux)

        iEYEARECAAYFAkg 4a1QACgkQn3IEGI Lecb5ibACgoYyLa Oc+q51D0g+Suudn qHab
        dYYAnjH3E0/e2y0owJ1PuWMk13 i9YVA/
        =7C8x
        -----END PGP SIGNATURE-----

        Comment

        • =?ISO-8859-1?Q?=22Martin_v=2E_L=F6wis=22?=

          #5
          Re: need some help in serving static files inside a wsgi apps

          I guess, Apache does some kind of memory caching for files, which are often
          requested and small enough to fit into the system memory.
          Are you sure about this? I could not find anything in the documentation
          (other than mod_cache and friends, which is an unrelated functionality).
          Also, I don't see the need for Apache to cache frequently requested
          files itself. Instead, the operating system will cache frequently
          requested directories and files in memory, and it will do the same for
          a Python web server.

          Regards,
          Martin

          Comment

          • Sebastian 'lunar' Wiesner

            #6
            Re: need some help in serving static files inside a wsgi apps

            -----BEGIN PGP SIGNED MESSAGE-----
            Hash: SHA1

            [ "Martin v. Löwis" <martin@v.loewi s.de]
            >I guess, Apache does some kind of memory caching for files, which are
            >often requested and small enough to fit into the system memory.
            >
            Are you sure about this?
            No, I'm not. That's why I said "I guess" ;)
            Also, I don't see the need for Apache to cache frequently requested
            files itself. Instead, the operating system will cache frequently
            requested directories and files in memory, and it will do the same for
            a Python web server.
            Of course, a modern OS kernel will perform caching anyway, but this is most
            likely slower than in-process caching, since it will still require context
            switches from userspace into kernel space.

            Considering this, it seems reasonable to me, that apache does memory
            caching, but I'm by far not sure, I wouldn't put a bet on this ;)

            - --
            Freedom is always the freedom of dissenters.
            (Rosa Luxemburg)
            -----BEGIN PGP SIGNATURE-----
            Version: GnuPG v2.0.9 (GNU/Linux)

            iEYEARECAAYFAkg 5K7kACgkQn3IEGI Lecb48VwCeJYqoy i7IJKwASza9/u381dmg
            PqMAn1M/JBe8xEsOAPNosNW A9WoKCvNh
            =K3tE
            -----END PGP SIGNATURE-----

            Comment

            • Diez B. Roggisch

              #7
              Re: need some help in serving static files inside a wsgi apps

              Sebastian 'lunar' Wiesner schrieb:
              -----BEGIN PGP SIGNED MESSAGE-----
              Hash: SHA1
              >
              [ Diez B. Roggisch <deets@nospam.w eb.de]
              >>I finally managed to work with static files with a little hack, but it's
              >>ugly because I'm reading each static file per request.
              >How else should that work? Apache does that the same way.
              >
              I guess, Apache does some kind of memory caching for files, which are often
              requested and small enough to fit into the system memory. May be, that's
              what the OP is referring to ...
              I'm not aware of that, and I even more seriously doubt it. Because
              caching is a complicated, domain-dependend subject that would
              *immediately* cry for configuration - e.g. caching strategies and such.

              And a common idiom for apache & caching is to use Squid as reverse
              proxy. Which wouldn't be the case would apache cache by itself.

              Diez

              Comment

              • Matthew Woodcraft

                #8
                Re: need some help in serving static files inside a wsgi apps

                Diez B. Roggisch <deets@nospam.w eb.dewrote:
                >Sebastian 'lunar' Wiesner schrieb:
                >I guess, Apache does some kind of memory caching for files, which are often
                >requested and small enough to fit into the system memory. May be, that's
                >what the OP is referring to ...
                I'm not aware of that, and I even more seriously doubt it. Because
                caching is a complicated, domain-dependend subject that would
                *immediately* cry for configuration - e.g. caching strategies and such.
                This is available in current apache with mod_file_cache (for an
                explicitly configured list of files). I think the circumstances where
                you'd want to use it are quite rare.

                -M-

                Comment

                • Diez B. Roggisch

                  #9
                  Re: need some help in serving static files inside a wsgi apps

                  Matthew Woodcraft schrieb:
                  Diez B. Roggisch <deets@nospam.w eb.dewrote:
                  >Sebastian 'lunar' Wiesner schrieb:
                  >>I guess, Apache does some kind of memory caching for files, which are often
                  >>requested and small enough to fit into the system memory. May be, that's
                  >>what the OP is referring to ...
                  >
                  >I'm not aware of that, and I even more seriously doubt it. Because
                  >caching is a complicated, domain-dependend subject that would
                  >*immediately * cry for configuration - e.g. caching strategies and such.
                  >
                  This is available in current apache with mod_file_cache (for an
                  explicitly configured list of files). I think the circumstances where
                  you'd want to use it are quite rare.
                  As I said - explicit configuration is needed. And of course apache &
                  it's module system are flexible enough to allow caching as add-on. But
                  Sebastian speculated about some behind the scenes automatic caching.
                  Which apparently isn't there.

                  Diez

                  Comment

                  • =?ISO-8859-1?Q?=22Martin_v=2E_L=F6wis=22?=

                    #10
                    Re: need some help in serving static files inside a wsgi apps

                    >>I guess, Apache does some kind of memory caching for files, which are often
                    >>requested and small enough to fit into the system memory. May be, that's
                    >>what the OP is referring to ...
                    >
                    >I'm not aware of that, and I even more seriously doubt it. Because
                    >caching is a complicated, domain-dependend subject that would
                    >*immediately * cry for configuration - e.g. caching strategies and such.
                    >
                    This is available in current apache with mod_file_cache (for an
                    explicitly configured list of files). I think the circumstances where
                    you'd want to use it are quite rare.
                    Interestingly enough, this *doesn't* do memory caching for files.
                    Instead, it either keeps the file handle open, so you can seek to the
                    beginning of the file on the next request (avoiding the directory
                    lookup), or you can mmap the file. However, even if you mmap the file,
                    it is still the operating system's choice whether or not to cache the
                    file contents in memory.

                    Regards,
                    Martin

                    Comment

                    Working...