Giter Site home page Giter Site logo

typhoonae's Introduction

==================
Typhoon App Engine
==================

The TyphoonAE project aims at providing a full-featured and productive serving
environment to run Google App Engine (Python) applications. It delivers the
parts for building your own scalable App Engine while staying compatible with
Google's API.


Copyright and License
---------------------

Copyright 2009, 2010, 2011 Tobias Rodaebel

This software is released under the Apache License, Version 2.0. You may obtain
a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Google App Engine is a trademark of Google Inc.


Installation
------------

Since the TyphoonAE Python package contains glue code for various service
components, it is recommended to install this software with zc.buildout and the
buildout configuration which can be downloaded here::

  http://typhoonae.googlecode.com/files/typhoonae-buildout-0.2.1.tar.gz

Unpack the archive and follow the steps described in the README.txt file. This
package and the Google App Engine SDK 1.5.5 will also be installed by the
buildout.

For the ones who don't want to build their own TyphoonAE environment, we supply
a preconfigured VMware appliance. See http://code.google.com/p/typhoonae/wiki/VMware for a brief documentation.

Visit the project page http://typhoonae.googlecode.com for further information.

typhoonae's People

Contributors

e98cuenc avatar

Stargazers

Tang Zheng'en avatar

Forkers

feitianyiren

typhoonae's Issues

Problems with login/logout handler.

Some users experiencing problems with the default login/logout handler. 
Continuing after login 
causes a BadGatewayError.

Authentication needs some more refactoring to make it configurable.

Original issue reported on code.google.com by [email protected] on 1 May 2010 at 7:16

Incomplete cron.yaml file causes apptool to fail

What steps will reproduce the problem?
1. Use apptool to configure an application with the cron.yaml file 
consisting a single line containing "cron:"

What is the expected output? What do you see instead?
Traceback (most recent call last):
  File "./bin/apptool", line 28, in <module>
    typhoonae.apptool.main()
  File "/home/nwm/typhoonae/src/typhoonae/apptool.py", line 711, in main
    write_crontab(options, app_root)
  File "/home/nwm/typhoonae/src/typhoonae/apptool.py", line 564, in 
write_crontab
    for entry in cron_info.cron:
TypeError: 'NoneType' object is not iterable

What version of the product are you using? On what operating system?
0.1.2 on Ubuntu 9.10

Please provide any additional information below.
Google Appengine doesn't error when uploading an app with an incomplete 
cron.yaml file.

Original issue reported on code.google.com by [email protected] on 2 Feb 2010 at 9:23

No memcached process causes fail

What steps will reproduce the problem?
1. End the memcached app ("stop memcached" in supervisor).
2. Load a page that uses memcache.

What is the expected output? What do you see instead?
The following is a quote from Google:
"Calls to the memcache API will *not* throw exceptions but will instead 
return false for set() calls and None for get() calls (just like any other 
cache miss.)".
This does not occur, instead an UnknownReadFailure exception occurs when 
attempting a get(). (haven't looked into writes, but I expect it to be 
similar).

What version of the product are you using? On what operating system?
Latest Typhoon, Ubuntu 9.10.

Original issue reported on code.google.com by [email protected] on 28 Feb 2010 at 1:45

GQL query on list properties fails with MongoDB

What steps will reproduce the problem?
1. Run a GQL query on a list property that uses an embeded object

What is the expected output? What do you see instead?

For example:

class MyModel(db.Model):
  emails = db.ListProperty(db.Email)

query = db.GqlQuery('SELECT * FROM MyModel WHERE emails = :1', 
'[email protected]')

The mongo backend translates this query to the following filter spec:

{'emails.list': '[email protected]'}

which returns no results (assuming you already have an entity with 
[email protected] in your MongoDB). For the case of a list of db.Emails the 
filter spec should be

{'emails.list.value': '[email protected]'}

to find the entities.


What version of the product are you using? On what operating system?

Current typhoonae checkout (2010-03-24).


Please provide any additional information below.

I've encountered this problem while experimenting with the Rietveld 
example. The issue list of a user executes such a query ("Issue reviewable 
by me").

Original issue reported on code.google.com by albrecht.andi on 24 Mar 2010 at 11:11

Enable apptool to accept a configuration file.

Apptool currently takes a number of commandline arguments to configure an
app. Alternatively it should accept a configuration file that contains
those parameters.

Example:
./bin/apptool --config_file=apptool.yaml parts/helloworld/

 - The configuration file should be in yaml format.
 - config-file and commandline-parameters can be mixed.
 - additional commandline-parameters overwrite values in the config.





Original issue reported on code.google.com by [email protected] on 24 Dec 2009 at 1:05

Supervisor unable to open HTTP server

I followed the instructions at 
http://sites.google.com/site/gaeasaframework/typhoonae to install TyphoonAE

When running supervisord, it fails, claiming that it was unable to open an 
HTTP server.

Error: Cannot open an HTTP server: socket.error reported -5

What version of the product are you using? On what operating system?
Most recent from the code repository, Ubuntu 9.04


Original issue reported on code.google.com by [email protected] on 21 Feb 2010 at 11:17

Static file pattern handlers in app.yaml getting ignored

The bin/apptool console script lacks support for parsing file pattern handler 
definitions like:

- url: /images/(.*)
  static_files: static/images/\1
  upload: static/images/(.*)

So, they get ignored and NGINX responds with 404.


Original issue reported on code.google.com by [email protected] on 14 Oct 2009 at 1:59

Cannot write unicode strings to the FastCGI output stream

What steps will reproduce the problem?

Configure a simple helloworld app:

app.yaml:

---
application: helloworld
version: 1
runtime: python
api_version: 1

handlers:

- url: /.*
  script: app.py

---
app.py:

---
print 'Content-Type: text/plain'
print
print u'Hello, World!'

---

When trying to write unicode strings to the FastCGI output stream it raises 
"TypeError: string 
argument expected for write".

Original issue reported on code.google.com by [email protected] on 27 Nov 2009 at 10:54

No support for memcache.offset_multi(...)

Google App Engine SDK 1.2.8 introduced new memcache offset_multi method and 
batch support in 
incr and decr.

This needs to be implemented in TyphoonAE's memcache service API proxy stub.

Original issue reported on code.google.com by [email protected] on 28 Feb 2010 at 1:11

Usage Guide

The GettingStarted document provides enough information to get the system
setup and run the helloworld app.

It would be very good to have another (at least minimal) document that:
- Provides an overview of what each of the items installed in bin does.
- Provides examples of doing basic tasks such as creating additional new
apps, updating existing apps, etc....
- Provides a basic explanation of the system's layout. (ie should I put my
code under parts?)


Original issue reported on code.google.com by [email protected] on 29 Oct 2009 at 4:13

Unable to define custom login/logout handlers

The default login and logout handlers in 
http://code.google.com/p/typhoonae/source/browse/src/typhoonae/__init__.py?r=rel
ease-
0.1.0b1#51 are blocking any custom handlers with the same url.

Original issue reported on code.google.com by [email protected] on 29 Nov 2009 at 3:41

Blobstore creates invalid upload URL

What steps will reproduce the problem?
1. Observe the output of: blobstore.create_upload_url('/upload')

What is the expected output? What do you see instead?
Expected output: http://192.168.1.103:8080/upload/loNgranDomsTriNGl0l
Current output: http://localhost.localdomain:8080/upload/loNgranDomsTriNGl0l

What version of the product are you using? On what operating system?
0.1.2 on Ubuntu 9.10

Original issue reported on code.google.com by [email protected] on 2 Feb 2010 at 9:42

Dealing with memory leaky applications

I have noticed that, over time, Typhoon uses more and more memory, this is 
due to the modules that I use taking up more and more memory. The cause is 
irrelevant.

Google handles this issue by exiting application instances when they grow too 
big, and creating more when there is demand for them. I suggest that Typhoon 
implements similar functionality.

Original issue reported on code.google.com by [email protected] on 15 Apr 2010 at 11:11

Configure HTTP port with apptool

The bin/apptool console script should provide a command line option to 
configure the port for the 
HTTP server to listen on. The default port is 8080.

At the moment this can only be changed by editing etc/server.conf and 
etc/<your_app_id>-
supervisor.conf.

Original issue reported on code.google.com by [email protected] on 10 Jan 2010 at 12:22

Appstats not implemented

What steps will reproduce the problem?
1. Follow the instructions on Google's Python Appstats documentation
2. Use web-browser to load a page from the Application

What is the expected output? What do you see instead?
The page returns of 503 error. The log for the application displays an 
error claiming that the appstats library was unable to be initialized.
ERROR    2010-02-27 16:25:08,137 __init__.py:94] Could not initialize 
script '$PYTHON_LIB/google/appengine/ext/appstats/ui.py'. ImportError: No 
module named appstats.ui

What version of the product are you using? On what operating system?
Most recent from hg as of 10min before this issue was created. Ubuntu 9.10

Please provide any additional information below.
Google's Appstats documentation: 
http://code.google.com/appengine/docs/python/tools/appstats.html

Original issue reported on code.google.com by [email protected] on 27 Feb 2010 at 5:30

Static file in root doesn't work

What steps will reproduce the problem?

1. Create app with static file in the root "/" of the site

app.yaml:
-   url: /
    static_files: index.html
    upload: index.html

2. Go to the root of the site.
3. Get 404 or 502 error instead of the file. 


Original issue reported on code.google.com by [email protected] on 10 Jan 2010 at 2:51

Unable to store BlobKey in datastore

Typhoon is having trouble storing on object of type BlobKey in the datastore, 
by reading the traceback, it's seems likely that there is trouble with 
encoding the object.

What version of the product are you using? On what operating system?
0.1.2 on Ubuntu 9.10

Please provide any additional information below.
The included file contains the Traceback information.

Original issue reported on code.google.com by [email protected] on 3 Feb 2010 at 6:57

Attachments:

Support for appcfg.py command

TyphoonAE should implement a service to fully support the appcfg.py command  
http://code.google.com/appengine/docs/python/tools/uploadinganapp.html

Original issue reported on code.google.com by [email protected] on 4 Jun 2010 at 9:49

static_dir in app.yaml uses the wrong dir

What steps will reproduce the problem?
1. Create app with app.yaml including this:
-   url: /foo
     static_dir: bar

2. Access file in "foo" dir like this: http://example.com/foo/<file>
3. Server responds with error 404.

What is the expected output? What do you see instead?

Nginx tries to look for these files in a local dir "foo" instead of a "bar".

If both dir names are equal - everything works fine.

Original issue reported on code.google.com by [email protected] on 10 Jan 2010 at 1:59

Datastore mongoDB stub does not support Model.all(keys_only=True)

It turns out, that the datastore stub implementation for mongoDB lacks proper 
support for 
Model.all(keys_only=True). This query returns full entities as well which 
breaks applications using 
this feature.

See 
http://code.google.com/appengine/docs/python/datastore/modelclass.html#Model_all
 for 
further information.

Original issue reported on code.google.com by [email protected] on 25 Nov 2009 at 10:44

Attempt to upload file to Blobstore raises an AttributeError with GAE SDK 1.3.3 prerelease

Due to renaming a constant in google.appengine.api.blobstore, uploading a file 
to the blobstore 
raises an AttributeError:

Traceback (most recent call last):
  File "/typhoonae/bin/appserver", line 29, in <
module>
    typhoonae.fcgiserver.main()
  File "/typhoonae/src/typhoonae/fcgiserver.py",
 line 323, in main
    serve(conf, options)
  File "/typhoonae/src/typhoonae/fcgiserver.py",
 line 185, in serve
    sys.stdin = cgi_handler_chain(CGIInAdapter(inp), os.environ)
  File "/typhoonae/src/typhoonae/fcgiserver.py", line 53, in __call__
    fp = handler(fp, environ)
  File "/typhoonae/src/typhoonae/blobstore/handlers.py", line 153, in __call__
    timestamp = format_timestamp(datetime.datetime.now())
  File "/typhoonae/src/typhoonae/blobstore/handlers.py", line 147, in format_timestamp
    f = google.appengine.api.blobstore.BASE_CREATION_HEADER_FORMAT
AttributeError: 'module' object has no attribute 'BASE_CREATION_HEADER_FORMAT'

Original issue reported on code.google.com by [email protected] on 15 Apr 2010 at 11:37

Cannot bootstrap with Python 2.7 (trunk)

What steps will reproduce the problem?
1. svn co python trunk
2. /path/to/python2.7 bootstrap.py

The traceback is:

Downloading http://pypi.python.org/packages/2.7/s/setuptools/setuptools-
0.6c9-py2.7.egg
Traceback (most recent call last):
  File "bootstrap-old.py", line 22, in <module>
    ez['use_setuptools'](to_dir=tmpeggs, download_delay=0, version="0.6c9")
  File "<string>", line 103, in use_setuptools
  File "<string>", line 97, in do_download
  File "<string>", line 158, in download_setuptools
  File "/home/cloudy/cloud/lib/python2.7/urllib2.py", line 126, in urlopen
    return _opener.open(url, data, timeout)
  File "/home/cloudy/cloud/lib/python2.7/urllib2.py", line 397, in open
    response = meth(req, response)
  File "/home/cloudy/cloud/lib/python2.7/urllib2.py", line 510, in 
http_response
    'http', request, response, code, msg, hdrs)
  File "/home/cloudy/cloud/lib/python2.7/urllib2.py", line 435, in error
    return self._call_chain(*args)
  File "/home/cloudy/cloud/lib/python2.7/urllib2.py", line 369, in 
_call_chain
    result = func(*args)
  File "/home/cloudy/cloud/lib/python2.7/urllib2.py", line 518, in 
http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 404: Not Found

As a workaround, I downloaded http://python-distribute.org/bootstrap.py - 
which still didn't work by itself, but by adding the --distribute flag ( 
/path/to/python2.7 bootstrap.py --distribute ) it worked.

I think there's no harm in using distribute; their bootstrap.py is (almost) 
fully backwards-compatible. Would you consider upgrading to the distribute-
one? It still defaults to setuptools, but picks a newer version.

Original issue reported on code.google.com by attilaolah on 16 Feb 2010 at 4:48

Web Socket API

In parallel to http://code.google.com/p/googleappengine/issues/detail?id=2535 
I've started with 
TyphoonAE's own experimental implementation of a Web Socket API.

See http://code.google.com/p/typhoonae/wiki/WebSockets for further details.

Original issue reported on code.google.com by [email protected] on 2 Feb 2010 at 10:11

corntab fails on fedora

What steps will reproduce the problem?
1. deploy an app with cron.yaml: ./bin/apptool --crontab  parts/app_using_cron/

What is the expected output? What do you see instead?
Cron job is not being added error message is being shown instead:
"/home/user/env/typhoonae-buildout-0.1.3/var/tmpjBvmFB":1: premature EOF
errors in crontab file, can't install.

What version of the product are you using? On what operating system?
Fedora 12, typhoonae-0.1.3, default python 2.6


Original issue reported on code.google.com by ivovnenko on 9 Apr 2010 at 4:38

UnicodeDecodeError with memcache.put(...)

class MyModel(db.Model):
    name = db.StringProperty()

entity = MyModel(name="foobar")

memcache.set('protobuf',
    db.model_to_protobuf(entity).Encode())

raises UnicodeDecodeError: 'utf8' codec can't decode byte 0x82 in position 42: 
unexpected code 
byte

Original issue reported on code.google.com by [email protected] on 24 Nov 2009 at 10:58

Monitor application for modifications

Currently, when you modify an application, Typhoon won't serve pages using 
the most recent version of the script until you restart Typhoon.

This is irritating when working out Typhoon specific bugs or developing 
applications that make use of Typhoon-exclusive features (WebSockets).

It would be nice for Typhoon to behave much like the GAE SDK in this regard, 
and check the application's files for modification, and be able to serve 
pages based on the new updates.

If possible, I would like this feature to be optional, a Typhoon installation 
used for running a public website wouldn't need this feature, and could 
potentially be slowed down because of it.

Original issue reported on code.google.com by [email protected] on 5 Mar 2010 at 12:18

Better support for scheduled tasks

The bin/apptool console script should be able to write crontab entries by 
parsing a cron.yaml file. 
See http://code.google.com/appengine/docs/python/config/cron.html for further 
information on 
scheduled tasks in GAE.

For now, one must edit the crontab manually.

Original issue reported on code.google.com by [email protected] on 31 Oct 2009 at 8:58

Improve the users API

The current users API is about the same as the one in the AppEngine SDK, good 
for development, but useless for any practical purpose.

Replacing it with something that uses a Google account for login (much like 
the official GAE), perhaps support for other systems of login could be used 
too, like OpenID.

I am unsure of how administrator users should be configured, perhaps just use 
a apptool flag to set it?

Original issue reported on code.google.com by [email protected] on 4 Mar 2010 at 1:50

BDBDatastore support

Integration of Nick Johnson's BDBDatastore 
http://arachnid.github.com/bdbdatastore/ as alternate 
datastore backend.

Original issue reported on code.google.com by [email protected] on 30 Nov 2009 at 1:43

Unable to fetch data from blob in blobstore

What steps will reproduce the problem?
from google.appengine.ext.blobstore import fetch_data, MAX_BLOB_FETCH_SIZE

What is the expected output? What do you see instead?
I expect the fetch_data function to be imported, and will be used to fetch 
data from a blob located in a blobstore (as per GAE documentation)

Instead:
ImportError: cannot import name fetch_data


Original issue reported on code.google.com by [email protected] on 29 Mar 2010 at 12:05

XMPP service

TyphoonAE should talk XMPP. Considering ejabberd as service.

Original issue reported on code.google.com by [email protected] on 10 Oct 2009 at 6:33

Buildout takes a long time to download erlang

What steps will reproduce the problem?
1. Running buildout
2. Observe the amount of time it takes to download erlang

What is the expected output? What do you see instead?
The file that buildout tries to download takes much longer than what should 
be expected of 57MB (under 1 minute seems fair for a 20mbit connection), 
instead of the 40 minutes I just tested now.

What version of the product are you using? On what operating system?
Most recent pull as of the time of issue creation (rev 99bf0ce7da).
Tested on Ubuntu 9.10 running within VirtualBox, aswell as an Eee PC 900 
also running Ubuntu 9.10.

Please provide any additional information below.
The problem seems to be that the file is downloaded from the erlang servers 
at a very slow speed due to a problem on it's end (possibly slow 
connection, cheap hosting, etc). Perhaps include the file with Typhoon, or 
host it in the Google code project (assuming it is legal to do so) is a 
potential solution.

Original issue reported on code.google.com by [email protected] on 30 Apr 2010 at 6:33

Redis-Backed Datastore

After some investigation, I've started to implement a Datastore Redis API proxy 
stub. It's placed in 
its own package and repository. See 
http://code.google.com/p/typhoonae/source/browse/README.rst?repo=redis for 
further 
information.

Design goals:
- plugs into the Google App Engine SDK and (of corse) TyphoonAE
- capable to handle larger amounts of production data
- doing well with concurrency in a multi-process environment

Original issue reported on code.google.com by [email protected] on 14 Apr 2010 at 1:57

Error installing RabbitMQ

When running buildout on Ubuntu 9.10 the following error occurs:

src/rabbit_access_control.erl:33: can't find include lib 
"stdlib/include/qlc.hrl"
make: *** [ebin/rabbit_access_control.beam] Error 1
While:
  Installing rabbitmq.

An internal error occured due to a bug in either zc.buildout or in a
recipe being used:
Traceback (most recent call last):
  File "/tmp/tmpi4Kmip/zc.buildout-1.4.3-py2.5.egg/zc/buildout/buildout.py", line 1660, in 
main
  File "/tmp/tmpi4Kmip/zc.buildout-1.4.3-py2.5.egg/zc/buildout/buildout.py", line 532, in 
install
  File "/tmp/tmpi4Kmip/zc.buildout-1.4.3-py2.5.egg/zc/buildout/buildout.py", line 1204, in 
_call
  File "/home/tobias/projects/typhoonae-buildout-0.1.3/eggs/rod.recipe.rabbitmq-1.0.0-
py2.5.egg/rod/recipe/rabbitmq/__init__.py", line 217, in install
    return self.install_rabbitmq()
  File "/home/tobias/projects/typhoonae-buildout-0.1.3/eggs/rod.recipe.rabbitmq-1.0.0-
py2.5.egg/rod/recipe/rabbitmq/__init__.py", line 204, in install_rabbitmq
    raise Exception("building RabbitMQ failed")
Exception: building RabbitMQ failed

Original issue reported on code.google.com by [email protected] on 21 Mar 2010 at 12:30

Blobstore API support

The Google App Engine SDK 1.3.0 release introduced the Blobstore API. We need 
an efficient and 
compatible implementation for TyphoonAE.

Original issue reported on code.google.com by [email protected] on 22 Dec 2009 at 1:48

Cursor causes assertion error

What steps will reproduce the problem?
1. Attempting to extract a cursor from a query

What is the expected output? What do you see instead?
I expected no error to occur, and for the cursors to work as they do in the 
GAESDK and GAE.
Instead, an AssertionError exception occurs:
AssertionError: No cursor available, either this query has not been 
executed or there is no compilation available for this kind of query
(Full traceback attached as a file)

What version of the product are you using? On what operating system?
Latest trunk. Ubuntu 9.10.

Please provide any additional information below.
I included a simple script that demonstrates the error occurring. It runs 
fine on GAE SDK and GAE, but not Typhoon.

Original issue reported on code.google.com by [email protected] on 27 Feb 2010 at 10:50

Attachments:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.