Python 3.9 is now generally available.

google.appengine.api.taskqueue.add

Convenience method that creates a task and adds it to a queue.

All parameters are optional.

Push tasks cannot be added to queues in pull mode. Similarly, pull tasks cannot be added to queues in push mode.

payload The payload data for this task that will be delivered to the webhook or backend as the HTTP request body (for push queues) or fetched by workers as part of the response from lease_tasks() (for pull queues). This argument is only allowed for POST and PUT methods and pull tasks.
queue_name Name of queue to insert task into. If a name is not supplied, defaults to the default queue.
name Name to give the task; if not specified, a name will be auto-generated when added to a queue and assigned to this object. The name must match the _TASK_NAME_PATTERN regular expression.
method Method to use when accessing the webhook; the default value is POST. Other accepted values are GET, PUT, DELETE, HEAD, or PULL. Do not specify a method for push tasks, as the method will default to POST and post assigned tasks to the web hook at the url you specify. If you set the method to PULL, the task will not be automatically delivered to the webhook; instead, it will remain in the queue until leased.
url Relative URL where the webhook that should handle this task is located for this application. You can use a query string unless this argument is used in a POST method. You cannot use this argument in a pull task.
headers Dictionary of headers to pass to the webhook. Values in the dictionary can be iterable to indicate repeated header fields. If you do not specify a Content-Type header for a PUSH method, the default header (text/plain) will be used. If you specify a Host header for a PUSH method, do not specify a target argument. You cannot use a header argument in a pull task. Any headers that use the X-AppEngine prefix will also be dropped.
params Dictionary of parameters to use for this task. For POST and pull requests, the values in the dictionary can be iterable to indicate repeated parameters, and these parameters will be encoded as application/x-www-form-urlencoded and set to the payload. For both POST and pull requests, do not specify parameters if you have already specified a payload. For PUT requests, parameters are converted to a query string if the URL contains a query string, or if the task already has a payload. For PUT requests, do not specify parameters if the URL already contains a query string and the method is GET. For all other methods, the parameters will be converted to a query string.
transactional Optional. If True, adds tasks if and only if the enclosing transaction is successfully committed. An error will be returned if this argument is set to True in the absence of an enclosing transaction. If False, adds the tasks immediately, ignoring any enclosing transaction's success or failure.
countdown Time in seconds into the future that this task should run or be leased. Defaults to zero. Do not specify this argument if you specified an eta.
eta A datetime.datetime that specifies the absolute earliest time at which the task should run. You cannot specify this argument if the countdown argument is specified. This argument can be time zone-aware or time zone-naive, or set to a time in the past. If the argument is set to None, the default value is now. For pull tasks, no worker can lease the task before the time indicated by the eta argument.
retry_options TaskRetryOptions used to control when the task will be retried if it fails. For pull tasks, you can only specify the task_retry_limit option to specify the number of times that a task can be leased before it is deleted from the queue. For push tasks, you can specify the min_backoff_seconds, max_backoff_seconds, task_age_limit, max_doublings, and task_retry_limit options.
tag The tag to be used when grouping by tag (pull tasks only).
target Push tasks only; specifies the alternate version or backend on which to run this task, or DEFAULT_APP_VERSION to run on the application's default version. You can specify a module or version, a frontend version, or a backend on which to run this task. The string that you specify will be prepended to the domain name of your app. If you specify the target argument, do not specify a Host header in the dictionary for the headers argument.

The task that was added to the queue.

BadTransactionStateError If the transactional argument is true but this call is being made outside of the context of a transaction.
InvalidEtaError If the eta is set too far into the future.
InvalidQueueModeError If a pull task is added to a queue in push mode, or a task with method not equal to PULL is added to a queue in pull mode.
InvalidTagError If the tag is too long.
InvalidTaskError If any of the parameters are invalid.
InvalidTaskNameError If the task name is invalid.
InvalidUrlError If the task URL is invalid or too long.
TaskTooLargeError If the task with its associated payload is too large.
TransactionalRequestTooLargeError If transactional is True and the total size of the tasks and supporting request data exceeds the MAX_TRANSACTIONAL_REQUEST_SIZE_BYTES quota.