Skip to main content

Rocket task manager

Project description

PypiDownloads pythonversions

Rocket task manager

Asynchronous task manager in python

Install

pip install rockettm

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

Example

Rabbitmq not is localhost

from rockettm import connect

# to run it, reconnect to RabbitMQ
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))

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 = "localhost"
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

CHANGELOG

1.0.1 (2016-08-22)

  • send_task now sends the set ip

1.0.0 (2016-07-19)

  • Added callback support

  • generate uuid for task

  • all tasks get _id in first attr

  • if multiple tasks with the same name, if continued with the following fails

  • prevent connection closed to send_task (automatic reconnect)

0.2.6 (2016-07-15)

  • py3 compatibility

  • fix hardcoding durable

  • ignore not exists logger config

0.2.5 (2016-07-15)

  • py3 compatibility

0.2.4 (2016-07-15)

  • Fix automatic declare queue

0.2.3 (2016-06-14)

  • Add new dependency (timekiller)

0.2.2 (2016-06-14)

  • hotfix bad raise

0.2.1 (2016-06-14)

  • Hotfix rabbitmq_server command

0.2.0 (2016-06-13)

  • add support timeout (tasks and queues)

0.1.1 (2016-04-27)

  • Fix dependencies

0.1.0 (2016-03-22)

  • Permit change log

0.0.4 (2016-03-21)

  • Fix CHANGELOG

  • Update README

0.0.3 (2016-03-21)

  • Permit connect different rabbitmq server

  • Prevent channel_closed

  • Support durable queues

0.0.2 (2016-03-14)

  • Add documentation

0.0.1 (2016-03-14)

  • initial version

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

rockettm-1.0.1.tar.gz (4.8 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page