Re: A Python Web Application Package and Format

Daniel Holth <[email protected]>
Newsgroups gmane.comp.python.web
Message-ID <28179202.921.1303310942359.JavaMail.geo-discussion-forums@yqnv19>
I am fine with the idea of passing a standard [YAML] container-resources 
configuration file to applications, but I mostly care about the orthogonal 
underlying 'copy a virtualenv to another server' use case. My proposal:

site.py should honor a new environment variable PYTHONAPPBASE, similar to 
PYTHONUSERBASE or PYTHONHOME.

PYTHONAPPBASE causes site.py to add an additional site-packages directory in 
PYTHONAPPBASE/lib/python2.7/site-packages or Lib/site-packages etc. in the 
same way the current site-packages paths are chosen.

(Optional) If that's not good enough, PYTHONAPPSITE specifies a directory 
that is given to site.addsitepackages(). A maximum of 1 directory within 
PYTHONAPPBASE can be added.

site.py gains APP_BASE and APP_SITE in the same way it currently contains 
USER_BASE and USER_SITE.

All other paths such as PYTHONAPPBASE/src/mypackage-0.1/src/__init__.py are 
resolved with .pth files that must contain relative paths only.

Definitions:

runtime: Python libraries available to but outside the webapp. Chosen by 
setting PYTHONHOME. The application metadata might choose a runtime by name, 
and the application server might display the results of 'pip freeze' for the 
runtime to help you build a matching development environment.

app.wsgi is the initial entry point /for the WSGI application/ but scripts 
can be run by setting up the environment in the same way.

To configure such an application with uWSGI then, if the Python runtime is 
in /runtimeA and the web application package is in /application, you would 
provide the following uWSGI configuration:

[uwsgi]
pyhome=/runtimeA
chdir=/application
file=/application/app.wsgi
env=PYTHONAPPBASE=/application
# to be specified later:
env=STANDARD_CONFIGURATION_FILE=/some-container-services.yaml

When app.wsgi starts it can access any libraries from 
/runtimeA/lib/python2.7/site-packages and any libraries from 
/application/lib/python2.7/site-packages

Since PYTHONPATH comes from site.py, not app.wsgi, it's very easy to perform 
the same setup for any other scripts within /application/


Is this anything?

Daniel Holth

_______________________________________________
Web-SIG mailing list
[email protected]
Web SIG: http://www.python.org/sigs/web-sig
Unsubscribe: http://mail.python.org/mailman/options/web-sig/gcpw-web-sig%40m.gmane.org
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.