| @@ -0,0 +1 @@ | ||
| CELERY_USER=developer |
| @@ -0,0 +1,79 @@ | ||
| FROM debian:jessie | ||
| ENV PYTHONIOENCODING UTF-8 | ||
| # Pypy is installed from a package manager because it takes so long to build. | ||
| RUN apt-get update && apt-get install -y \ | ||
| build-essential \ | ||
| curl \ | ||
| git \ | ||
| libbz2-dev \ | ||
| libcurl4-openssl-dev \ | ||
| libmemcached-dev \ | ||
| libncurses5-dev \ | ||
| libreadline-dev \ | ||
| libsqlite3-dev \ | ||
| libssl-dev \ | ||
| pkg-config \ | ||
| pypy \ | ||
| wget \ | ||
| zlib1g-dev | ||
| # Setup variables. Even though changing these may cause unnecessary invalidation of | ||
| # unrelated elements, grouping them together makes the Dockerfile read better. | ||
| ENV PROVISIONING /provisioning | ||
| # This is provisioned from .env | ||
| ARG CELERY_USER=developer | ||
| # Check for mandatory build arguments | ||
| RUN : "${CELERY_USER:?CELERY_USER build argument needs to be set and non-empty.}" | ||
| ENV HOME /home/$CELERY_USER | ||
| ENV PATH="$HOME/.pyenv/bin:$PATH" | ||
| # Copy and run setup scripts | ||
| WORKDIR $PROVISIONING | ||
| COPY docker/scripts/install-couchbase.sh . | ||
| # Scripts will lose thier executable flags on copy. To avoid the extra instructions | ||
| # we call the shell directly. | ||
| RUN sh install-couchbase.sh | ||
| COPY docker/scripts/create-linux-user.sh . | ||
| RUN sh create-linux-user.sh | ||
| # Swap to the celery user so packages and celery are not installed as root. | ||
| USER $CELERY_USER | ||
| COPY docker/scripts/install-pyenv.sh . | ||
| RUN sh install-pyenv.sh | ||
| # Install celery | ||
| WORKDIR $HOME | ||
| COPY --chown=1000:1000 requirements $HOME/requirements | ||
| COPY --chown=1000:1000 docker/entrypoint /entrypoint | ||
| RUN chmod gu+x /entrypoint | ||
| # Define the local pyenvs | ||
| RUN pyenv local python2.7 python3.4 python3.5 python3.6 | ||
| # Setup one celery environment for basic development use | ||
| RUN pyenv exec pip install \ | ||
| -r requirements/default.txt \ | ||
| -r requirements/pkgutils.txt \ | ||
| -r requirements/test.txt \ | ||
| -r requirements/test-ci-base.txt \ | ||
| -r requirements/test-integration.txt | ||
| COPY --chown=1000:1000 MANIFEST.in Makefile setup.py setup.cfg tox.ini $HOME/ | ||
| COPY --chown=1000:1000 docs $HOME/docs | ||
| COPY --chown=1000:1000 t $HOME/t | ||
| COPY --chown=1000:1000 celery $HOME/celery | ||
| RUN pyenv exec pip install -e . | ||
| # the compiled files from earlier steps will cause py.test to fail with | ||
| # an ImportMismatchError | ||
| RUN make clean-pyc | ||
| # Setup the entrypoint, this ensures pyenv is initialized when a container is started. | ||
| ENTRYPOINT ["/entrypoint"] |
| @@ -0,0 +1,36 @@ | ||
| version: '2' | ||
| services: | ||
| celery: | ||
| build: | ||
| context: .. | ||
| dockerfile: docker/Dockerfile | ||
| args: | ||
| CELERY_USER: | ||
| environment: | ||
| TEST_BROKER: pyamqp://rabbit:5672 | ||
| TEST_BACKEND: redis://redis | ||
| PYTHONUNBUFFERED: 1 | ||
| PYTHONDONTWRITEBYTECODE: 1 | ||
| REDIS_HOST: redis | ||
| WORKER_LOGLEVEL: DEBUG | ||
| tty: true | ||
| volumes: | ||
| - ../celery:/home/$CELERY_USER/celery | ||
| # Because pytest fails when it encounters files from alternative python compilations, | ||
| # __pycache__ and pyc files, PYTHONDONTWRITEBYTECODE must be | ||
| # set on the host as well or py.test will throw configuration errors. | ||
| # - ../t:/home/$CELERY_USER/t | ||
| depends_on: | ||
| - rabbit | ||
| - redis | ||
| - dynamodb | ||
| rabbit: | ||
| image: rabbitmq:3.7.3 | ||
| redis: | ||
| image: redis:3.2.11 | ||
| dynamodb: | ||
| image: dwmkerr/dynamodb:38 |
| @@ -0,0 +1,4 @@ | ||
| #!/bin/bash | ||
| eval "$(pyenv init -)" | ||
| eval "$(pyenv virtualenv-init -)" | ||
| exec "$@" |
| @@ -0,0 +1,3 @@ | ||
| #!/bin/sh | ||
| addgroup --gid 1000 $CELERY_USER | ||
| adduser --system --disabled-password --uid 1000 --gid 1000 $CELERY_USER |
| @@ -0,0 +1,5 @@ | ||
| #!/bin/sh | ||
| wget http://packages.couchbase.com/clients/c/libcouchbase-2.8.4_jessie_amd64.tar | ||
| tar -vxf libcouchbase-2.8.4_jessie_amd64.tar | ||
| dpkg -i libcouchbase-2.8.4_jessie_amd64/libcouchbase2-core_2.8.4-1_amd64.deb | ||
| dpkg -i libcouchbase-2.8.4_jessie_amd64/libcouchbase-dev_2.8.4-1_amd64.deb |
| @@ -0,0 +1,13 @@ | ||
| #!/bin/sh | ||
| # For managing all the local python installations for testing, use pyenv | ||
| curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash | ||
| # To enable testing versions like 3.4.8 as 3.4 in tox, we need to alias | ||
| # pyenv python versions | ||
| git clone https://github.com/s1341/pyenv-alias.git $(pyenv root)/plugins/pyenv-alias | ||
| # Python versions to test against | ||
| VERSION_ALIAS="python2.7" pyenv install 2.7.14 | ||
| VERSION_ALIAS="python3.4" pyenv install 3.4.8 | ||
| VERSION_ALIAS="python3.5" pyenv install 3.5.5 | ||
| VERSION_ALIAS="python3.6" pyenv install 3.6.4 |
| @@ -0,0 +1,326 @@ | ||
| .. _changelog-4.1: | ||
| ================ | ||
| Change history | ||
| ================ | ||
| .. _version-4.1.0: | ||
| 4.1.0 | ||
| ===== | ||
| :release-date: 2017-07-25 00:00 PM PST | ||
| :release-by: Omer Katz | ||
| - **Configuration**: CELERY_SEND_EVENTS instead of CELERYD_SEND_EVENTS for 3.1.x compatibility (#3997) | ||
| Contributed by **abhinav nilaratna**. | ||
| - **App**: Restore behavior so Broadcast queues work. (#3934) | ||
| Contributed by **Patrick Cloke**. | ||
| - **Sphinx**: Make appstr use standard format (#4134) (#4139) | ||
| Contributed by **Preston Moore**. | ||
| - **App**: Make id, name always accessible from logging.Formatter via extra (#3994) | ||
| Contributed by **Yoichi NAKAYAMA**. | ||
| - **Worker**: Add worker_shutting_down signal (#3998) | ||
| Contributed by **Daniel Huang**. | ||
| - **PyPy**: Support PyPy version 5.8.0 (#4128) | ||
| Contributed by **Omer Katz**. | ||
| - **Results**: Elasticsearch: Fix serializing keys (#3924) | ||
| Contributed by :github_user:`staticfox`. | ||
| - **Canvas**: Deserialize all tasks in a chain (#4015) | ||
| Contributed by :github_user:`fcoelho`. | ||
| - **Systemd**: Recover loglevel for ExecStart in systemd config (#4023) | ||
| Contributed by **Yoichi NAKAYAMA**. | ||
| - **Sphinx**: Use the Sphinx add_directive_to_domain API. (#4037) | ||
| Contributed by **Patrick Cloke**. | ||
| - **App**: Pass properties to before_task_publish signal (#4035) | ||
| Contributed by **Javier Domingo Cansino**. | ||
| - **Results**: Add SSL option for Redis backends (#3831) | ||
| Contributed by **Chris Kuehl**. | ||
| - **Beat**: celery.schedule.crontab: fix reduce (#3826) (#3827) | ||
| Contributed by **Taylor C. Richberger**. | ||
| - **State**: Fix celery issues when using flower REST API | ||
| Contributed by **Thierry RAMORASOAVINA**. | ||
| - **Results**: Elasticsearch: Fix serializing document id. | ||
| Contributed by **Acey9**. | ||
| - **Beat**: Make shallow copy of schedules dictionary | ||
| Contributed by **Brian May**. | ||
| - **Beat**: Populate heap when periodic tasks are changed | ||
| Contributed by **Wojciech Żywno**. | ||
| - **Task**: Allow class methods to define tasks (#3952) | ||
| Contributed by **georgepsarakis**. | ||
| - **Platforms**: Always return boolean value when checking if signal is supported (#3962). | ||
| Contributed by **Jian Yu**. | ||
| - **Canvas**: Avoid duplicating chains in chords (#3779) | ||
| Contributed by **Ryan Hiebert**. | ||
| - **Canvas**: Lookup task only if list has items (#3847) | ||
| Contributed by **Marc Gibbons**. | ||
| - **Results**: Allow unicode message for exception raised in task (#3903) | ||
| Contributed by **George Psarakis**. | ||
| - **Python3**: Support for Python 3.6 (#3904, #3903, #3736) | ||
| Contributed by **Jon Dufresne**, **George Psarakis**, **Asif Saifuddin Auvi**, **Omer Katz**. | ||
| - **App**: Fix retried tasks with expirations (#3790) | ||
| Contributed by **Brendan MacDonell**. | ||
| - * Fixes items format route in docs (#3875) | ||
| Contributed by **Slam**. | ||
| - **Utils**: Fix maybe_make_aware (#3850) | ||
| Contributed by **Taylor C. Richberger**. | ||
| - **Task**: Fix task ETA issues when timezone is defined in configuration (#3867) | ||
| Contributed by **George Psarakis**. | ||
| - **Concurrency**: Consumer does not shutdown properly when embedded in gevent application (#3746) | ||
| Contributed by **Arcadiy Ivanov**. | ||
| - **Canvas**: Fix #3725: Task replaced with group does not complete (#3731) | ||
| Contributed by **Morgan Doocy**. | ||
| - **Task**: Correct order in chains with replaced tasks (#3730) | ||
| Contributed by **Morgan Doocy**. | ||
| - **Result**: Enable synchronous execution of sub-tasks (#3696) | ||
| Contributed by **shalev67**. | ||
| - **Task**: Fix request context for blocking task apply (added hostname) (#3716) | ||
| Contributed by **Marat Sharafutdinov**. | ||
| - **Utils**: Fix task argument handling (#3678) (#3693) | ||
| Contributed by **Roman Sichny**. | ||
| - **Beat**: Provide a transparent method to update the Scheduler heap (#3721) | ||
| Contributed by **Alejandro Pernin**. | ||
| - **Beat**: Specify default value for pidfile option of celery beat. (#3722) | ||
| Contributed by **Arnaud Rocher**. | ||
| - **Results**: Elasticsearch: Stop generating a new field every time when a new result is being put (#3708) | ||
| Contributed by **Mike Chen**. | ||
| - **Requirements** | ||
| - Now depends on :ref:`Kombu 4.1.0 <kombu:version-4.1.0>`. | ||
| - **Results**: Elasticsearch now reuses fields when new results are added. | ||
| Contributed by **Mike Chen**. | ||
| - **Results**: Fixed MongoDB integration when using binary encodings | ||
| (Issue #3575). | ||
| Contributed by **Andrew de Quincey**. | ||
| - **Worker**: Making missing ``*args`` and ``**kwargs`` in Task protocol 1 | ||
| return empty value in protocol 2 (Issue #3687). | ||
| Contributed by **Roman Sichny**. | ||
| - **App**: Fixed :exc:`TypeError` in AMQP when using deprecated signal | ||
| (Issue #3707). | ||
| Contributed by :github_user:`michael-k`. | ||
| - **Beat**: Added a transparent method to update the scheduler heap. | ||
| Contributed by **Alejandro Pernin**. | ||
| - **Task**: Fixed handling of tasks with keyword arguments on Python 3 | ||
| (Issue #3657). | ||
| Contributed by **Roman Sichny**. | ||
| - **Task**: Fixed request context for blocking task apply by adding missing | ||
| hostname attribute. | ||
| Contributed by **Marat Sharafutdinov**. | ||
| - **Task**: Added option to run subtasks synchronously with | ||
| ``disable_sync_subtasks`` argument. | ||
| Contributed by :github_user:`shalev67`. | ||
| - **App**: Fixed chaining of replaced tasks (Issue #3726). | ||
| Contributed by **Morgan Doocy**. | ||
| - **Canvas**: Fixed bug where replaced tasks with groups were not completing | ||
| (Issue #3725). | ||
| Contributed by **Morgan Doocy**. | ||
| - **Worker**: Fixed problem where consumer does not shutdown properly when | ||
| embedded in a gevent application (Issue #3745). | ||
| Contributed by **Arcadiy Ivanov**. | ||
| - **Results**: Added support for using AWS DynamoDB as a result backend (#3736). | ||
| Contributed by **George Psarakis**. | ||
| - **Testing**: Added caching on pip installs. | ||
| Contributed by :github_user:`orf`. | ||
| - **Worker**: Prevent consuming queue before ready on startup (Issue #3620). | ||
| Contributed by **Alan Hamlett**. | ||
| - **App**: Fixed task ETA issues when timezone is defined in configuration | ||
| (Issue #3753). | ||
| Contributed by **George Psarakis**. | ||
| - **Utils**: ``maybe_make_aware`` should not modify datetime when it is | ||
| already timezone-aware (Issue #3849). | ||
| Contributed by **Taylor C. Richberger**. | ||
| - **App**: Fixed retrying tasks with expirations (Issue #3734). | ||
| Contributed by **Brendan MacDonell**. | ||
| - **Results**: Allow unicode message for exceptions raised in task | ||
| (Issue #3858). | ||
| Contributed by :github_user:`staticfox`. | ||
| - **Canvas**: Fixed :exc:`IndexError` raised when chord has an empty header. | ||
| Contributed by **Marc Gibbons**. | ||
| - **Canvas**: Avoid duplicating chains in chords (Issue #3771). | ||
| Contributed by **Ryan Hiebert** and **George Psarakis**. | ||
| - **Utils**: Allow class methods to define tasks (Issue #3863). | ||
| Contributed by **George Psarakis**. | ||
| - **Beat**: Populate heap when periodic tasks are changed. | ||
| Contributed by :github_user:`wzywno` and **Brian May**. | ||
| - **Results**: Added support for Elasticsearch backend options settings. | ||
| Contributed by :github_user:`Acey9`. | ||
| - **Events**: Ensure ``Task.as_dict()`` works when not all information about | ||
| task is available. | ||
| Contributed by :github_user:`tramora`. | ||
| - **Schedules**: Fixed pickled crontab schedules to restore properly (Issue #3826). | ||
| Contributed by **Taylor C. Richberger**. | ||
| - **Results**: Added SSL option for redis backends (Issue #3830). | ||
| Contributed by **Chris Kuehl**. | ||
| - Documentation and examples improvements by: | ||
| - **Bruno Alla** | ||
| - **Jamie Alessio** | ||
| - **Vivek Anand** | ||
| - **Peter Bittner** | ||
| - **Kalle Bronsen** | ||
| - **Jon Dufresne** | ||
| - **James Michael DuPont** | ||
| - **Sergey Fursov** | ||
| - **Samuel Dion-Girardeau** | ||
| - **Daniel Hahler** | ||
| - **Mike Helmick** | ||
| - **Marc Hörsken** | ||
| - **Christopher Hoskin** | ||
| - **Daniel Huang** | ||
| - **Primož Kerin** | ||
| - **Michal Kuffa** | ||
| - **Simon Legner** | ||
| - **Anthony Lukach** | ||
| - **Ed Morley** | ||
| - **Jay McGrath** | ||
| - **Rico Moorman** | ||
| - **Viraj Navkal** | ||
| - **Ross Patterson** | ||
| - **Dmytro Petruk** | ||
| - **Luke Plant** | ||
| - **Eric Poelke** | ||
| - **Salvatore Rinchiera** | ||
| - **Arnaud Rocher** | ||
| - **Kirill Romanov** | ||
| - **Simon Schmidt** | ||
| - **Tamer Sherif** | ||
| - **YuLun Shih** | ||
| - **Ask Solem** | ||
| - **Tom 'Biwaa' Riat** | ||
| - **Arthur Vigil** | ||
| - **Joey Wilhelm** | ||
| - **Jian Yu** | ||
| - **YuLun Shih** | ||
| - **Arthur Vigil** | ||
| - **Joey Wilhelm** | ||
| - :github_user:`baixuexue123` | ||
| - :github_user:`bronsen` | ||
| - :github_user:`michael-k` | ||
| - :github_user:`orf` | ||
| - :github_user:`3lnc` |
| @@ -0,0 +1,258 @@ | ||
| .. _whatsnew-4.1: | ||
| =========================================== | ||
| What's new in Celery 4.1 (latentcall) | ||
| =========================================== | ||
| :Author: Omer Katz (``omer.drow at gmail.com``) | ||
| .. sidebar:: Change history | ||
| What's new documents describe the changes in major versions, | ||
| we also have a :ref:`changelog` that lists the changes in bugfix | ||
| releases (0.0.x), while older series are archived under the :ref:`history` | ||
| section. | ||
| Celery is a simple, flexible, and reliable distributed system to | ||
| process vast amounts of messages, while providing operations with | ||
| the tools required to maintain such a system. | ||
| It's a task queue with focus on real-time processing, while also | ||
| supporting task scheduling. | ||
| Celery has a large and diverse community of users and contributors, | ||
| you should come join us :ref:`on IRC <irc-channel>` | ||
| or :ref:`our mailing-list <mailing-list>`. | ||
| To read more about Celery you should go read the :ref:`introduction <intro>`. | ||
| While this version is backward compatible with previous versions | ||
| it's important that you read the following section. | ||
| This version is officially supported on CPython 2.7, 3.4, 3.5 & 3.6 | ||
| and is also supported on PyPy. | ||
| .. _`website`: http://celeryproject.org/ | ||
| .. topic:: Table of Contents | ||
| Make sure you read the important notes before upgrading to this version. | ||
| .. contents:: | ||
| :local: | ||
| :depth: 2 | ||
| Preface | ||
| ======= | ||
| The 4.1.0 release continues to improve our efforts to provide you with | ||
| the best task execution platform for Python. | ||
| This release is mainly a bug fix release, ironing out some issues and regressions | ||
| found in Celery 4.0.0. | ||
| We added official support for Python 3.6 and PyPy 5.8.0. | ||
| This is the first time we release without Ask Solem as an active contributor. | ||
| We'd like to thank him for his hard work in creating and maintaining Celery over the years. | ||
| Since Ask Solem was not involved there were a few kinks in the release process | ||
| which we promise to resolve in the next release. | ||
| This document was missing when we did release Celery 4.1.0. | ||
| Also, we did not update the release codename as we should have. | ||
| We apologize for the inconvenience. | ||
| For the time being, I, Omer Katz will be the release manager. | ||
| Thank you for your support! | ||
| *— Omer Katz* | ||
| Wall of Contributors | ||
| -------------------- | ||
| Acey <huiwang.e@gmail.com> | ||
| Acey9 <huiwang.e@gmail.com> | ||
| Alan Hamlett <alanhamlett@users.noreply.github.com> | ||
| Alan Justino da Silva <alan.justino@yahoo.com.br> | ||
| Alejandro Pernin <ale.pernin@gmail.com> | ||
| Alli <alzeih@users.noreply.github.com> | ||
| Andreas Pelme <andreas@pelme.se> | ||
| Andrew de Quincey <adq@lidskialf.net> | ||
| Anthony Lukach <anthonylukach@gmail.com> | ||
| Arcadiy Ivanov <arcadiy@ivanov.biz> | ||
| Arnaud Rocher <cailloumajor@users.noreply.github.com> | ||
| Arthur Vigil <ahvigil@mail.sfsu.edu> | ||
| Asif Saifuddin Auvi <auvipy@users.noreply.github.com> | ||
| Ask Solem <ask@celeryproject.org> | ||
| BLAGA Razvan-Paul <razvan.paul.blaga@gmail.com> | ||
| Brendan MacDonell <macdonellba@gmail.com> | ||
| Brian Luan <jznight@gmail.com> | ||
| Brian May <brian@linuxpenguins.xyz> | ||
| Bruno Alla <browniebroke@users.noreply.github.com> | ||
| Chris Kuehl <chris@techxonline.net> | ||
| Christian <github@penpal4u.net> | ||
| Christopher Hoskin <mans0954@users.noreply.github.com> | ||
| Daniel Hahler <github@thequod.de> | ||
| Daniel Huang <dxhuang@gmail.com> | ||
| Derek Harland <donkopotamus@users.noreply.github.com> | ||
| Dmytro Petruk <bavaria95@gmail.com> | ||
| Ed Morley <edmorley@users.noreply.github.com> | ||
| Eric Poelke <epoelke@gmail.com> | ||
| Felipe <fcoelho@users.noreply.github.com> | ||
| François Voron <fvoron@gmail.com> | ||
| GDR! <gdr@gdr.name> | ||
| George Psarakis <giwrgos.psarakis@gmail.com> | ||
| J Alan Brogan <jalanb@users.noreply.github.com> | ||
| James Michael DuPont <JamesMikeDuPont@gmail.com> | ||
| Jamie Alessio <jamie@stoic.net> | ||
| Javier Domingo Cansino <javierdo1@gmail.com> | ||
| Jay McGrath <jaymcgrath@users.noreply.github.com> | ||
| Jian Yu <askingyj@gmail.com> | ||
| Joey Wilhelm <tarkatronic@gmail.com> | ||
| Jon Dufresne <jon.dufresne@gmail.com> | ||
| Kalle Bronsen <bronsen@nrrd.de> | ||
| Kirill Romanov <djaler1@gmail.com> | ||
| Laurent Peuch <cortex@worlddomination.be> | ||
| Luke Plant <L.Plant.98@cantab.net> | ||
| Marat Sharafutdinov <decaz89@gmail.com> | ||
| Marc Gibbons <marc_gibbons@rogers.com> | ||
| Marc Hörsken <mback2k@users.noreply.github.com> | ||
| Michael <michael-k@users.noreply.github.com> | ||
| Michael Howitz <mh@gocept.com> | ||
| Michal Kuffa <beezz@users.noreply.github.com> | ||
| Mike Chen <yi.chen.it@gmail.com> | ||
| Mike Helmick <michaelhelmick@users.noreply.github.com> | ||
| Morgan Doocy <morgan@doocy.net> | ||
| Moussa Taifi <moutai10@gmail.com> | ||
| Omer Katz <omer.drow@gmail.com> | ||
| Patrick Cloke <clokep@users.noreply.github.com> | ||
| Peter Bittner <django@bittner.it> | ||
| Preston Moore <prestonkmoore@gmail.com> | ||
| Primož Kerin <kerin.primoz@gmail.com> | ||
| Pysaoke <pysaoke@gmail.com> | ||
| Rick Wargo <rickwargo@users.noreply.github.com> | ||
| Rico Moorman <rico.moorman@gmail.com> | ||
| Roman Sichny <roman@sichnyi.com> | ||
| Ross Patterson <me@rpatterson.net> | ||
| Ryan Hiebert <ryan@ryanhiebert.com> | ||
| Rémi Marenco <remi.marenco@gmail.com> | ||
| Salvatore Rinchiera <srinchiera@college.harvard.edu> | ||
| Samuel Dion-Girardeau <samuel.diongirardeau@gmail.com> | ||
| Sergey Fursov <GeyseR85@gmail.com> | ||
| Simon Legner <Simon.Legner@gmail.com> | ||
| Simon Schmidt <schmidt.simon@gmail.com> | ||
| Slam <3lnc.slam@gmail.com> | ||
| Static <staticfox@staticfox.net> | ||
| Steffen Allner <sa@gocept.com> | ||
| Steven <rh0dium@users.noreply.github.com> | ||
| Steven Johns <duoi@users.noreply.github.com> | ||
| Tamer Sherif <tamer.sherif@flyingelephantlab.com> | ||
| Tao Qingyun <845767657@qq.com> | ||
| Tayfun Sen <totayfun@gmail.com> | ||
| Taylor C. Richberger <taywee@gmx.com> | ||
| Thierry RAMORASOAVINA <thierry.ramorasoavina@orange.com> | ||
| Tom 'Biwaa' Riat <riat.tom@gmail.com> | ||
| Viktor Holmqvist <viktorholmqvist@gmail.com> | ||
| Viraj <vnavkal0@gmail.com> | ||
| Vivek Anand <vivekanand1101@users.noreply.github.com> | ||
| Will <paradox41@users.noreply.github.com> | ||
| Wojciech Żywno <w.zywno@gmail.com> | ||
| Yoichi NAKAYAMA <yoichi.nakayama@gmail.com> | ||
| YuLun Shih <shih@yulun.me> | ||
| Yuhannaa <yuhannaa@gmail.com> | ||
| abhinav nilaratna <anilaratna2@bloomberg.net> | ||
| aydin <adigeaydin@gmail.com> | ||
| csfeathers <csfeathers@users.noreply.github.com> | ||
| georgepsarakis <giwrgos.psarakis@gmail.com> | ||
| orf <tom@tomforb.es> | ||
| shalev67 <shalev67@gmail.com> | ||
| sww <sww@users.noreply.github.com> | ||
| tnir <tnir@users.noreply.github.com> | ||
| 何翔宇(Sean Ho) <h1x2y3awalm@gmail.com> | ||
| .. note:: | ||
| This wall was automatically generated from git history, | ||
| so sadly it doesn't not include the people who help with more important | ||
| things like answering mailing-list questions. | ||
| .. _v410-important: | ||
| Important Notes | ||
| =============== | ||
| Added support for Python 3.6 & PyPy 5.8.0 | ||
| ----------------------------------------- | ||
| We now run our unit test suite and integration test suite on Python 3.6.x | ||
| and PyPy 5.8.0. | ||
| We expect newer versions of PyPy to work but unfortunately we do not have the | ||
| resources to test PyPy with those versions. | ||
| The supported Python Versions are: | ||
| - CPython 2.7 | ||
| - CPython 3.4 | ||
| - CPython 3.5 | ||
| - CPython 3.6 | ||
| - PyPy 5.8 (``pypy2``) | ||
| .. _v410-news: | ||
| News | ||
| ==== | ||
| Result Backends | ||
| --------------- | ||
| New DynamoDB Results Backend | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| We added a new results backend for those of you who are using DynamoDB. | ||
| If you are interested in using this results backend, refer to :ref:`conf-dynamodb-result-backend` for more information. | ||
| Elasticsearch | ||
| ~~~~~~~~~~~~~ | ||
| The Elasticsearch results backend is now more robust and configurable. | ||
| See :ref:`conf-elasticsearch-result-backend` for more information | ||
| about the new configuration options. | ||
| Redis | ||
| ~~~~~ | ||
| The Redis results backend can now use TLS to encrypt the communication with the | ||
| Redis database server. | ||
| See :ref:`conf-redis-result-backend`. | ||
| MongoDB | ||
| ~~~~~~~ | ||
| The MongoDB results backend can now handle binary-encoded task results. | ||
| This was a regression from 4.0.0 which resulted in a problem using serializers | ||
| such as MsgPack or Pickle in conjunction with the MongoDB results backend. | ||
| Periodic Tasks | ||
| -------------- | ||
| The task schedule now updates automatically when new tasks are added. | ||
| Now if you use the Django database scheduler, you can add and remove tasks from the schedule without restarting Celery beat. | ||
| Tasks | ||
| ----- | ||
| The ``disable_sync_subtasks`` argument was added to allow users to override disabling | ||
| synchronous subtasks. | ||
| See :ref:`task-synchronous-subtasks` | ||
| Canvas | ||
| ------ | ||
| Multiple bugs were resolved resulting in a much smoother experience when using Canvas. |
| @@ -0,0 +1,273 @@ | ||
| .. _whatsnew-4.2: | ||
| =========================================== | ||
| What's new in Celery 4.2 (windowlicker) | ||
| =========================================== | ||
| :Author: Omer Katz (``omer.drow at gmail.com``) | ||
| .. sidebar:: Change history | ||
| What's new documents describe the changes in major versions, | ||
| we also have a :ref:`changelog` that lists the changes in bugfix | ||
| releases (0.0.x), while older series are archived under the :ref:`history` | ||
| section. | ||
| Celery is a simple, flexible, and reliable distributed system to | ||
| process vast amounts of messages, while providing operations with | ||
| the tools required to maintain such a system. | ||
| It's a task queue with focus on real-time processing, while also | ||
| supporting task scheduling. | ||
| Celery has a large and diverse community of users and contributors, | ||
| you should come join us :ref:`on IRC <irc-channel>` | ||
| or :ref:`our mailing-list <mailing-list>`. | ||
| To read more about Celery you should go read the :ref:`introduction <intro>`. | ||
| While this version is backward compatible with previous versions | ||
| it's important that you read the following section. | ||
| This version is officially supported on CPython 2.7, 3.4, 3.5 & 3.6 | ||
| and is also supported on PyPy. | ||
| .. _`website`: http://celeryproject.org/ | ||
| .. topic:: Table of Contents | ||
| Make sure you read the important notes before upgrading to this version. | ||
| .. contents:: | ||
| :local: | ||
| :depth: 2 | ||
| Preface | ||
| ======= | ||
| The 4.2.0 release continues to improve our efforts to provide you with | ||
| the best task execution platform for Python. | ||
| This release is mainly a bug fix release, ironing out some issues and regressions | ||
| found in Celery 4.0.0. | ||
| Traditionally, releases were named after `Autechre <https://en.wikipedia.org/wiki/Autechre>`_'s track names. | ||
| This release continues this tradition in a slightly different way. | ||
| Each major version of Celery will use a different artist's track names as codenames. | ||
| From now on, the 4.x series will be codenamed after `Aphex Twin <https://en.wikipedia.org/wiki/Aphex_Twin>`_'s track names. | ||
| This release is codenamed after his very famous track, `Windowlicker <https://youtu.be/UBS4Gi1y_nc?t=4m>`_. | ||
| Thank you for your support! | ||
| *— Omer Katz* | ||
| Wall of Contributors | ||
| -------------------- | ||
| Alejandro Varas <alej0varas@gmail.com> | ||
| Alex Garel <alex@garel.org> | ||
| Alex Hill <alex@hill.net.au> | ||
| Alex Zaitsev <azaitsev@gmail.com> | ||
| Alexander Ovechkin <frostoov@gmail.com> | ||
| Andrew Wong <argsno@gmail.com> | ||
| Anton <anton.gladkov@gmail.com> | ||
| Anton Gladkov <atn18@yandex-team.ru> | ||
| Armenak Baburyan <kanemra@gmail.com> | ||
| Asif Saifuddin Auvi <auvipy@users.noreply.github.com> | ||
| BR <b.rabiega@gmail.com> | ||
| Ben Welsh <ben.welsh@gmail.com> | ||
| Bohdan Rybak <bohdan.rybak@gmail.com> | ||
| Chris Mitchell <chris.mit7@gmail.com> | ||
| DDevine <devine@ddevnet.net> | ||
| Dan Wilson <danjwilson@gmail.com> | ||
| David Baumgold <david@davidbaumgold.com> | ||
| David Davis <daviddavis@users.noreply.github.com> | ||
| Denis Podlesniy <Haos616@Gmail.com> | ||
| Denis Shirokov <dan@rexuni.com> | ||
| Fengyuan Chen <cfy1990@gmail.com> | ||
| GDR! <gdr@gdr.name> | ||
| Geoffrey Bauduin <bauduin.geo@gmail.com> | ||
| George Psarakis <giwrgos.psarakis@gmail.com> | ||
| Harry Moreno <morenoh149@gmail.com> | ||
| Huang Huang <mozillazg101@gmail.com> | ||
| Igor Kasianov <super.hang.glider@gmail.com> | ||
| JJ <jairojair@gmail.com> | ||
| Jackie Leng <Jackie.Leng@nelen-schuurmans.nl> | ||
| James M. Allen <james.m.allen@gmail.com> | ||
| Javier Martin Montull <javier.martin.montull@cern.ch> | ||
| John Arnold <johnar@microsoft.com> | ||
| Jon Dufresne <jon.dufresne@gmail.com> | ||
| Jozef <knaperek@users.noreply.github.com> | ||
| Kevin Gu <guqi@reyagroup.com> | ||
| Kxrr <Hi@Kxrr.Us> | ||
| Leo Singer <leo.singer@ligo.org> | ||
| Mads Jensen <mje@inducks.org> | ||
| Manuel Vázquez Acosta <mvaled@users.noreply.github.com> | ||
| Marcelo Da Cruz Pinto <Marcelo_DaCruzPinto@McAfee.com> | ||
| Marco Schweighauser <marco@mailrelay.ch> | ||
| Markus Kaiserswerth <github@sensun.org> | ||
| Matt Davis <matteius@gmail.com> | ||
| Michael <michael-k@users.noreply.github.com> | ||
| Michael Peake <michaeljpeake@icloud.com> | ||
| Mikołaj <mikolevy1@gmail.com> | ||
| Misha Wolfson <myw@users.noreply.github.com> | ||
| Nick Eaket <4418194+neaket360pi@users.noreply.github.com> | ||
| Nicolas Mota <nicolas_mota@live.com> | ||
| Nicholas Pilon <npilon@gmail.com> | ||
| Omer Katz <omer.drow@gmail.com> | ||
| Patrick Cloke <clokep@users.noreply.github.com> | ||
| Patrick Zhang <patdujour@gmail.com> | ||
| Paulo <PauloPeres@users.noreply.github.com> | ||
| Rachel Johnson <racheljohnson457@gmail.com> | ||
| Raphaël Riel <raphael.riel@gmail.com> | ||
| Russell Keith-Magee <russell@keith-magee.com> | ||
| Ryan Guest <ryanguest@gmail.com> | ||
| Ryan P Kilby <rpkilby@ncsu.edu> | ||
| Régis B <github@behmo.com> | ||
| Sammie S. Taunton <diemuzi@gmail.com> | ||
| Samuel Dion-Girardeau <samueldg@users.noreply.github.com> | ||
| Scott Cooper <scttcper@gmail.com> | ||
| Sergi Almacellas Abellana <sergi@koolpi.com> | ||
| Sergio Fernandez <ElAutoestopista@users.noreply.github.com> | ||
| Shitikanth <golu3990@gmail.com> | ||
| Theodore Dubois <tbodt@users.noreply.github.com> | ||
| Thijs Triemstra <info@collab.nl> | ||
| Tobias Kunze <rixx@cutebit.de> | ||
| Vincent Barbaresi <vbarbaresi@users.noreply.github.com> | ||
| Vinod Chandru <vinod.chandru@gmail.com> | ||
| Wido den Hollander <wido@widodh.nl> | ||
| Xavier Hardy <xavierhardy@users.noreply.github.com> | ||
| anentropic <ego@anentropic.com> | ||
| arpanshah29 <ashah29@stanford.edu> | ||
| dmollerm <d.moller.m@gmail.com> | ||
| hclihn <23141651+hclihn@users.noreply.github.com> | ||
| jess <jessachandler@gmail.com> | ||
| lead2gold <caronc@users.noreply.github.com> | ||
| mariia-zelenova <32500603+mariia-zelenova@users.noreply.github.com> | ||
| martialp <martialp@users.noreply.github.com> | ||
| mperice <mperice@users.noreply.github.com> | ||
| pachewise <pachewise@users.noreply.github.com> | ||
| partizan <serg.partizan@gmail.com> | ||
| y0ngdi <36658095+y0ngdi@users.noreply.github.com> | ||
| .. note:: | ||
| This wall was automatically generated from git history, | ||
| so sadly it doesn't not include the people who help with more important | ||
| things like answering mailing-list questions. | ||
| .. _v420-important: | ||
| Important Notes | ||
| =============== | ||
| Supported Python Versions | ||
| ------------------------- | ||
| The supported Python Versions are: | ||
| - CPython 2.7 | ||
| - CPython 3.4 | ||
| - CPython 3.5 | ||
| - CPython 3.6 | ||
| - PyPy 5.8 (``pypy2``) | ||
| .. _v420-news: | ||
| News | ||
| ==== | ||
| Result Backends | ||
| --------------- | ||
| New Redis Sentinel Results Backend | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| Redis Sentinel provides high availability for Redis. | ||
| A new result backend supporting it was added. | ||
| Cassandra Results Backend | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| A new `cassandra_options` configuration option was introduced in order to configure | ||
| the cassandra client. | ||
| See :ref:`conf-cassandra-result-backend` for more information. | ||
| DynamoDB Results Backend | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| A new `dynamodb_endpoint_url` configuration option was introduced in order | ||
| to point the result backend to a local endpoint during development or testing. | ||
| See :ref:`conf-dynamodb-result-backend` for more information. | ||
| Python 2/3 Compatibility Fixes | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| Both the CouchDB and the Consul result backends accepted byte strings without decoding them to Unicode first. | ||
| This is now no longer the case. | ||
| Canvas | ||
| ------ | ||
| Multiple bugs were resolved resulting in a much smoother experience when using Canvas. | ||
| Tasks | ||
| ----- | ||
| Bound Tasks as Error Callbacks | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| We fixed a regression that occured when bound tasks are used as error callbacks. | ||
| This used to work in Celery 3.x but raised an exception in 4.x until this release. | ||
| In both 4.0 and 4.1 the following code wouldn't work: | ||
| .. code-block:: python | ||
| @app.task(name="raise_exception", bind=True) | ||
| def raise_exception(self): | ||
| raise Exception("Bad things happened") | ||
| @app.task(name="handle_task_exception", bind=True) | ||
| def handle_task_exception(self): | ||
| print("Exception detected") | ||
| subtask = raise_exception.subtask() | ||
| subtask.apply_async(link_error=handle_task_exception.s()) | ||
| Task Representation | ||
| ~~~~~~~~~~~~~~~~~~~ | ||
| - Shadowing task names now works as expected. | ||
| The shadowed name is properly presented in flower, the logs and the traces. | ||
| - `argsrepr` and `kwargsrepr` were previously not used even if specified. | ||
| They now work as expected. See :ref:`task-hiding-sensitive-information` for more information. | ||
| Custom Requests | ||
| ~~~~~~~~~~~~~~~ | ||
| We now allow tasks to use custom `request <celery.worker.request.Request>`:class: classes | ||
| for custom task classes. | ||
| See :ref:`task-requests-and-custom-requests` for more information. | ||
| Retries with Exponential Backoff | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| Retries can now be performed with exponential backoffs to avoid overwhelming | ||
| external services with requests. | ||
| See :ref:`task-autoretry` for more information. | ||
| Sphinx Extension | ||
| ---------------- | ||
| Tasks were supposed to be automatically documented when using Sphinx's Autodoc was used. | ||
| The code that would have allowed automatic documentation had a few bugs which are now fixed. | ||
| Also, The extension is now documented properly. See :ref:`sphinx` for more information. |
| @@ -0,0 +1,9 @@ | ||
| from __future__ import absolute_import, unicode_literals | ||
| import os | ||
| import sys | ||
| extensions = ['celery.contrib.sphinx'] | ||
| autodoc_default_flags = ['members'] | ||
| sys.path.insert(0, os.path.abspath('.')) |
| @@ -0,0 +1 @@ | ||
| .. automodule:: foo |
| @@ -0,0 +1,11 @@ | ||
| from __future__ import absolute_import, unicode_literals | ||
| from celery import Celery | ||
| from xyzzy import plugh # noqa | ||
| app = Celery() | ||
| @app.task | ||
| def bar(): | ||
| """This task has a docstring!""" |
| @@ -0,0 +1,10 @@ | ||
| from __future__ import absolute_import, unicode_literals | ||
| from celery import Celery | ||
| app = Celery() | ||
| @app.task | ||
| def plugh(): | ||
| """This task is in a different module!""" |
| @@ -0,0 +1,20 @@ | ||
| from __future__ import absolute_import, unicode_literals | ||
| import pkg_resources | ||
| import pytest | ||
| try: | ||
| sphinx_build = pkg_resources.load_entry_point( | ||
| 'sphinx', 'console_scripts', 'sphinx-build') | ||
| except pkg_resources.DistributionNotFound: | ||
| sphinx_build = None | ||
| @pytest.mark.skipif(sphinx_build is None, reason='Sphinx is not installed') | ||
| def test_sphinx(tmpdir): | ||
| srcdir = pkg_resources.resource_filename(__name__, 'proj') | ||
| sphinx_build([srcdir, str(tmpdir)]) | ||
| with open(tmpdir / 'contents.html', 'r') as f: | ||
| contents = f.read() | ||
| assert 'This task has a docstring!' in contents | ||
| assert 'This task is in a different module!' not in contents |