Skip to main content

managed celery task

Project description

https://badge.fury.io/py/heavy_celery.svg https://travis-ci.org/s1s5/heavy_celery.svg?branch=master https://codecov.io/gh/s1s5/heavy_celery/branch/master/graph/badge.svg

managed celery task

Documentation

The full documentation is at https://heavy_celery.readthedocs.io.

Quickstart

Install heavy_celery:

pip install heavy_celery

Add it to your INSTALLED_APPS:

INSTALLED_APPS = (
    ...
    'heavy_celery',
    ...
)

Features

settings.py

CELERY_DEFAULT_QUEUE = 'default'
CELERY_DEFAULT_EXCHANGE_TYPE = 'default'
CELERY_DEFAULT_ROUTING_KEY = 'default'

CELERY_QUEUES = (
    Queue('default', Exchange('default'), routing_key='default'),
    Queue('time_sensitive', Exchange('time_sensitive'), routing_key='time_sensitive_tasks'),
    Queue('background', Exchange('background'), routing_key='background'),
)

CELERY_REVOKE = 'example.apps.sample.tasks.celery_revoke'  # 適当なモジュールパスに変更
MIDDLEWARE += [
    'heavy_celery.middlewares.GlobalRequestMiddleware',
]

example/apps/sample/tasks.py

@app.task()
def celery_revoke(task_id):
    from celery.task.control import revoke
    revoke(task_id, terminate=True)

cronの機能を使うために

from celery.schedules import crontab
from <project_name>.celery_conf import app
from heavy_celery.cron import spawner as _cron_scheduler

@app.task()
def cron_scheduler():
    _cron_scheduler()

app.conf.beat_schedule = {
    'cron_scheduler': {
        'task': '<appname>.tasks.cron_scheduler',
        'schedule': crontab(),
        'args': (),
        'options': dict(queue='time_sensitive', routing_key='time_sensitive_tasks'),
    },
}

task定義の仕方

from heavy_celery import base

@app.task(base=base.Task)
def command(command_name, *args, **kw):
    call_command(command_name, *args, **kw)

タスクの定期実行のやり方

  • TaskSignatureの追加

  • name : タスク名

  • description : タスク詳細

  • task_path : タスクパス e.g) apps.foo.tasks.example_task

  • args : タスクに渡す引数(yaml形式)

  • kwargs : タスクに渡すkw引数(yaml形式)

  • options : タスクのスケジュールオプション、どのQueueにいれるかとか したみたいにしておけば、time_sensitiveのQueueで走るようになる

  • queue: time_sensitive routing_key: time_sensitive_tasks

  • CronScheduleの追加

  • name : cronタスク名

  • description : cronタスク詳細

  • cron_expr : cron表記

  • task : TaskSignatureオブジェクト

  • max_run_count : 最大繰り返し回数

Running Tests

Does the code actually work?

source <YOURVIRTUALENV>/bin/activate
(myenv) $ pip install tox
(myenv) $ tox

Credits

Tools used in rendering this package:

Development

$ cookiecutter https://github.com/pydanny/cookiecutter-djangopackage

$ mkvirtualenv –no-site-packages heavy_celery $ pip install tox twine

# test $ make test-all

# release $ python setup.py publish # at first $ pip install readme_renderer # at first $ python setup.py check -r -s # syntax check $ make release

History

0.1.0 (2017-07-06)

  • First release on PyPI.

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

heavy_celery-0.3.0.tar.gz (14.4 kB view details)

Uploaded Source

Built Distribution

heavy_celery-0.3.0-py2.py3-none-any.whl (16.9 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file heavy_celery-0.3.0.tar.gz.

File metadata

  • Download URL: heavy_celery-0.3.0.tar.gz
  • Upload date:
  • Size: 14.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/3.6

File hashes

Hashes for heavy_celery-0.3.0.tar.gz
Algorithm Hash digest
SHA256 674c16953199eaf5bee5b95b1fd7be2971ebbe4a302ce9bd62f387ea57efebda
MD5 7d03ae4852267e46c29e7e2e81ef1d5c
BLAKE2b-256 7ca8ebda406716d0f902063cd03d3edf2ce142edf9fee59c20fd6d64ab44699e

See more details on using hashes here.

File details

Details for the file heavy_celery-0.3.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for heavy_celery-0.3.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 57c1f7e55bdf86993843a7a0dc105978dfd2c529bcddd97778ae5797a1d4c45b
MD5 ef1519011ec103ce9805a2533ac7b118
BLAKE2b-256 c16b4d6f881bace7b631d6322e1c974721e5084fe0e78d7b51f74f7e8d97954d

See more details on using hashes here.

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