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 json
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/
Metadata
Release files for crew 0.9.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| crew-0.9.2.tar.gz | 11.0 kB | Details |
Release files / crew-0.9.2.tar.gz
| Download URL | crew-0.9.2.tar.gz |
|---|---|
| Size | 11.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
76427b80efb2a83096d334aa86971e77b17bc38f6b851d1212a053e57dbfa0fc
|
|
BLAKE2b-256 checksum How to use checksums |
4028217ca1977b8d90544ebb5b9d267c78dd0d4bd3f642e37729718ad0f2695d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |