AMQP based worker/master pattern framework
Project description
AMQP based RPC library for Tornado
Use cases
Task queue
Load balancing for different CPU-bound HTTP handlers
… other systems which involve RPC
Installation
pip install crew
Example
See the full example.
Usage
For example create your first app, and save as master.py:
import tornado.ioloop import tornado.gen import tornado.web import tornado.log import jaon import tornado.options from crew import TimeoutError, ExpirationError from crew.master.tornado import Client class MainHandler(tornado.web.RequestHandler): @tornado.gen.coroutine def get(self): resp = yield self.settings['crew'].call(None, priority=100) self.write(json.dumps(resp) cl = Client() application = tornado.web.Application( [ (r"/", MainHandler), ], crew=cl, autoreload=True, debug=True, ) if __name__ == "__main__": cl.connect() tornado.options.parse_command_line() application.listen(8888) tornado.ioloop.IOLoop.instance().start()
And create your first task, and save as worker.py:
# encoding: utf-8 from crew.worker import run, context, Task @Task('test') def long_task(req): context.settings.counter += 1 return {"counter": context.settings.counter} run( counter=0 )
After that run it:
$ python master.py & $ python worker.py & $ wait
Try to test it:
$ curl http://localhost:8888/
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
crew-0.7.0.tar.gz
(8.0 kB
view details)
File details
Details for the file crew-0.7.0.tar.gz
.
File metadata
- Download URL: crew-0.7.0.tar.gz
- Upload date:
- Size: 8.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dc1017e56b394b0b8dda157cbe50d6ad9e6ff4809bbbdf0018f673d58ed62dee |
|
MD5 | 3bd4ce328ebfa19d9491485ea1254d7f |
|
BLAKE2b-256 | 823fd9bce7d085175587ba85404122543ad275b66907ba2571204c5976104297 |