你正在阅读 Celery 3.1 的文档。开发版本文档见: 此处.
This module is the main entry-point for the Celery API. It includes commonly needed things for calling tasks, and creating Celery applications.
Celery | celery application instance |
group | group tasks together |
chain | chain tasks together |
chord | chords enable callbacks for groups |
signature | object describing a task invocation |
current_app | proxy to the current application instance |
current_task | proxy to the currently executing task |
2.5 新版功能.
参数: |
|
---|
Name of the __main__ module. Required for standalone scripts.
If set this will be used instead of __main__ when automatically generating task names.
Current configuration.
Custom options for command-line programs. See Adding new command-line options
Custom bootsteps to extend and modify the worker. See Installing Bootsteps.
The instance of the task that is being executed, or None.
Current backend instance.
Current loader instance.
Task registry.
Accessing this attribute will also finalize the app.
Broker connection pool: pool. This attribute is not related to the workers concurrency pool.
Base task class for this app.
Current timezone for this app. This is a cached property taking the time zone from the CELERY_TIMEZONE setting.
Close any open pool connections and do any other steps necessary to clean up after the application.
Only necessary for dynamically created apps for which you can use the with statement instead:
with Celery(set_as_current=False) as app:
with app.connection() as conn:
pass
Return a new Signature bound to this app. See signature()
Return a string with information useful for the Celery core developers when reporting a bug.
Reads configuration from object, where object is either an object or the name of a module to import.
参数: |
|
---|
>>> celery.config_from_object("myapp.celeryconfig")
>>> from myapp import celeryconfig
>>> celery.config_from_object(celeryconfig)
Read configuration from environment variable.
The value of the environment variable must be the name of a module to import.
>>> os.environ["CELERY_CONFIG_MODULE"] = "myapp.celeryconfig"
>>> celery.config_from_envvar("CELERY_CONFIG_MODULE")
With a list of packages, try to import modules of a specific name (by default ‘tasks’).
For example if you have an (imagined) directory tree like this:
foo/__init__.py
tasks.py
models.py
bar/__init__.py
tasks.py
models.py
baz/__init__.py
models.py
Then calling app.autodiscover_tasks(['foo', bar', 'baz']) will result in the modules foo.tasks and bar.tasks being imported.
参数: |
|
---|
Add default configuration from dict d.
If the argument is a callable function then it will be regarded as a promise, and it won’t be loaded until the configuration is actually needed.
This method can be compared to:
>>> celery.conf.update(d)
with a difference that 1) no copy will be made and 2) the dict will not be transferred when the worker spawns child processes, so it’s important that the same configuration happens at import time when pickle restores the object on the other side.
Setup the message-signing serializer. This will affect all application instances (a global operation).
Disables untrusted serializers and if configured to use the auth serializer will register the auth serializer with the provided settings into the Kombu serializer registry.
参数: |
|
---|
Decorator to create a task class out of any callable.
Examples:
@app.task
def refresh_feed(url):
return …
with setting extra options:
@app.task(exchange="feeds")
def refresh_feed(url):
return …
App Binding
For custom apps the task decorator will return a proxy object, so that the act of creating the task is not performed until the task is used or the task registry is accessed.
If you are depending on binding to be deferred, then you must not access any attributes on the returned object until the application is fully set up (finalized).
Send task by name.
参数: |
|
---|
Otherwise supports the same arguments as Task.apply_async().
Create new result instance. See AsyncResult.
Create new group result instance. See GroupResult.
Embeddable worker. See WorkController.
Establish a connection to the message broker.
参数: |
|
---|
:returns kombu.Connection:
For use within a with-statement to get a connection from the pool if one is not already provided.
参数: | connection – If not provided, then a connection will be acquired from the connection pool. |
---|
For use within a with-statement to get a producer from the pool if one is not already provided
参数: | producer – If not provided, then a producer will be acquired from the producer pool. |
---|
Sends an email to the admins in the ADMINS setting.
Select a subset of queues, where queues must be a list of queue names to keep.
Makes this the current app for this thread.
Finalizes the app by loading built-in tasks, and evaluating pending task decorators
Helper class used to pickle this application.
See Canvas: Designing Workflows for more about creating task workflows.
Creates a group of tasks to be executed in parallel.
Example:
>>> res = group([add.s(2, 2), add.s(4, 4)])()
>>> res.get()
[4, 8]
A group is lazy so you must call it to take action and evaluate the group.
Will return a group task that when called will then call of the tasks in the group (and return a GroupResult instance that can be used to inspect the state of the group).
Chains tasks together, so that each tasks follows each other by being applied as a callback of the previous task.
If called with only one argument, then that argument must be an iterable of tasks to chain.
Example:
>>> res = chain(add.s(2, 2), add.s(4))()
is effectively (2 + 2) + 4):
>>> res.get()
8
Calling a chain will return the result of the last task in the chain. You can get to the other tasks by following the result.parent‘s:
>>> res.parent.get()
4
A chord consists of a header and a body. The header is a group of tasks that must complete before the callback is called. A chord is essentially a callback for a group of tasks.
Example:
>>> res = chord([add.s(2, 2), add.s(4, 4)])(sum_task.s())
is effectively \Sigma ((2 + 2) + (4 + 4)):
>>> res.get()
12
The body is applied with the return values of all the header tasks as a list.
Describes the arguments and execution options for a single task invocation.
Used as the parts in a group or to safely pass tasks around as callbacks.
Signatures can also be created from tasks:
>>> add.subtask(args=(), kwargs={}, options={})
or the .s() shortcut:
>>> add.s(*args, **kwargs)
参数: |
|
---|
Note that if the first argument is a dict, the other arguments will be ignored and the values in the dict will be used instead.
>>> s = signature("tasks.add", args=(2, 2))
>>> signature(s)
{"task": "tasks.add", args=(2, 2), kwargs={}, options={}}
Call the task directly (in the current process).
Shortcut to apply_async().
Apply this task asynchronously.
参数: |
|
---|
See apply_async().
Same as apply_async() but executed the task inline instead of sending a task message.
Finalize the signature by adding a concrete task id. The task will not be called and you should not call the signature twice after freezing it as that will result in two task messages using the same task id.
返回: | celery.AsyncResult instance. |
---|
Return a copy of this signature.
参数: |
|
---|
Replace the args, kwargs or options set for this signature. These are only replaced if the selected is not None.
Add a callback task to be applied if this task executes successfully.
返回: | other_signature (to work with reduce()). |
---|
Add a callback task to be applied if an error occurs while executing this task.
返回: | other_signature (to work with reduce()) |
---|
Set arbitrary options (same as .options.update(…)).
This is a chaining method call (i.e. it will return self).
Gives a recursive list of dependencies (unchain if you will, but with links intact).