Skip to content

agalera/RocketTM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

110 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pythonversions

Rocket task manager

Asynchronous task manager in python

Install

pip install rockettm

Link pypi: https://pypi.python.org/pypi/rockettm

Example

Redis not is localhost

from rockettm import connect

# to run it, reconnect to Redis
connect("other_ip_or_domain")

Configure logger in client

Using standard logger in python https://docs.python.org/2/library/logging.html#logging.basicConfig

import logging
from rockettm import send_task

# 50 CRITICAL, 40 ERROR, 30 WARNING, 20 INFO, 10 DEBUG, 0 NOTSET
logging.basicConfig(level=20)
send_task("queue_name", "name_task", "Pepito")

Configure logger in server

in settings.py:

# filename (DEFAULT "rockettm.log")
# level (DEFAULT 30)
# 50 CRITICAL, 40 ERROR, 30 WARNING, 20 INFO, 10 DEBUG, 0 NOTSET
logger = {'filename': "rockettm.log",  # optional,
                                       # is not defined print in console
          'level': 10  # optional
         }

Send task

# send task
from rockettm import send_task

send_task("queue_name", "name_task", "arg1", ["arg2", "2"], {'args': 3}, ('arg', 4), example="ok")

Declare new task

Warning! if there are 2 tasks registered with the same name, will run 2!

# task example
from rockettm import task


@task('name_task')
def function1(*args, **kwargs):
    return True

# max_time(timeout in seconds) example
@task('name_task2', max_time=10)
def long_call(*args, **kwargs):
    return True

settings.py example

# settings.py example
ip = "127.0.0.1"
port = 5672

logger = {'filename': "rockettm.log",  # optional,
                                       # is not defined print in console
          'level': 10  # optional
          }

# search @task in imports
imports = ['examples.test1',
           'examples.test2']

# support params
# name (mandatory), string
# concurrency (mandatory), int
# durable (optional), boolean
# max_time (in seconds) (optional), int
queues = [{'name': 'rocket1', 'durable': True, 'concurrency': 7},
          {'name': 'rocket2', 'concurrency': 1},
          {'name': 'rocket3', 'concurrency': 1, 'max_time': 10}]

Run server

rockettm_server file_settings.py

Documentation

Functions

  • task(name_task_event)

It is a decorator to create tasks

  • send_task(queue, name_task, *args)

Send task

  • add_task(name_task, func(object))

Add manual task

  • connect(ip_or_domain)

connects to another server other than localhost

Basicevents

rockettm currently used basicevents for noticificaciones the api. You can use basicevents as its official documentation *

  • Do not need to run(), rockettm up a common process for all workers

https://github.com/agalera/basicevents

About

Rocket task manager

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages