Django GAE tasks improves upon App Engine's Deferred library and is forked from FreshPlanet's project.
Project description
## AppEngine Deferred module improved ##
This is forked from FreshPlanet’s improved [App Engine Deferred module](https://github.com/freshplanet/AppEngine-Deferred) and has the added functionality of having a Django View along with the webapp2 handler so that it can be used in either project type.
The AppEngine Python SDK has a great module when it comes to easily run some code “later”: [the deferred library](https://developers.google.com/appengine/articles/deferred) (if you are unfamiliar with this library, please have a look at its documentation first).
However the library has a few drawbacks that we solve here:
No asynchronous method ([issue 9530](https://code.google.com/p/googleappengine/issues/detail?id=9530))
The internal request handler inherits from webapp instead of webapp2 which can be an issue when using some webapp2 features (like webapp2.get_request)
It uses pickle instead of leveraging cPickle available with the Python 2.7 runtime.
The Route it uses is internal and will skip your middlewares unless you define them in a special appengine_config.py module.
Task could fail to properly execute when hitting a fresh instance which did not had all code loaded
Logging is a bit verbose: it uses the INFO level to show task headers that are redundant with what we can see by default in the AppEngine logs
We also added a couple of features to it:
Explicit URLs for tasks: instead of just seeing /_ah/queue/deferred in your logs you will see something like /_cb/deferred/app.module.name/funcName
Possibility to spread tasks over several queues in case of high throughput
Improved logging in case of error
Possibility to tie it to a background module to optimize serving requests
And some helpers: - isFromTaskQueue(): Check if we are currently running from a task queue - getRetryCount(): Returns the current number of times the current task is being retried - logAsRetried(): Depending on # of times the task is being retried, we will increase the logging level.
Our module still makes use of the deferred exceptions types `SingularTaskFailure` and `PermanentTaskFailure` to be compatible with existing code.
### Installation ### 1. pip install fh-django-gae-tasks 2. Add a route to your webapp2 or Django application mapping to where you included the tasks module:
webapp2: `webapp2.Route('/_cb/deferred/<module>/<name>', 'tasks.DeferredHandler')`
Django: `url(r'^_cb/deferred/(?P<module>.+)/(?P<name>.+)', csrf_exempt(tasks.DeferredView.as_view()))`
Optionally, better integrate with your application by updating the tasks module parameters:
`tasks.WARMUP_MODULE`
`tasks.DEFAULT_QUEUES`
`tasks.BACKGROUND_MODULE`
If you’re using Django, these settings can be set in your settings.py with the GAE_TASKS_* prefix.
(See the tasks module for more details)
–
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Hashes for fh-django-gae-tasks-0.1.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 45faa03ce21b054259ad47cbae7a7128fdbf7ac29d61067b48577a6a6c71b8cf |
|
MD5 | c5840b715bc185a4c61c1f7e4e48df50 |
|
BLAKE2b-256 | 88fcae80971c7cc3535064b7152a2dd270991a502cfef1290c21c6624d94e97b |