cloudtasker 0.9.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -1
- data/README.md +3 -1
- data/lib/cloudtasker.rb +1 -0
- data/lib/cloudtasker/cloud_task.rb +2 -0
- data/lib/cloudtasker/config.rb +3 -0
- data/lib/cloudtasker/max_task_size_exceeded_error.rb +14 -0
- data/lib/cloudtasker/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: dc46ef6ccfab1437c91a90c3cf3e4ee7b401fe5b453d8e61c7d8af09607f6695
|
|
4
|
+
data.tar.gz: 4a8192b395ff86ff1dba2d06d677237273cef952533e41b199256db3bad2cc0d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 387f5202bb42b3903cf7cede2fcc84978f8ca0bf0e61eadd73d8e8fbf2d4c29ce5bb15caa749b22386ec3e5363936afb93f9600b6fd0886734909937512303bd
|
|
7
|
+
data.tar.gz: 6b3a4a77d35d1c885e623e7e737ee9008fd16e05568e3f5f2bc8e82b9ce39feecfcaf875c4b94c6dc94ecb0a68855e651759980488b1eb633bb5ca645f254c73
|
data/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## [v0.9.
|
|
3
|
+
## [v0.9.1](https://github.com/keypup-io/cloudtasker/tree/v0.9.1) (2020-02-11)
|
|
4
|
+
|
|
5
|
+
[Full Changelog](https://github.com/keypup-io/cloudtasker/compare/v0.9.0...v0.9.1)
|
|
6
|
+
|
|
7
|
+
**Fixed bugs:**
|
|
8
|
+
- Cloud Task: raise `Cloudtasker::MaxTaskSizeExceededError` if job payload exceeds 100 KB. This is mainly to have production parity in development when running the local processing server.
|
|
9
|
+
|
|
10
|
+
## [v0.9.0](https://github.com/keypup-io/cloudtasker/tree/v0.9.0) (2020-01-23)
|
|
4
11
|
|
|
5
12
|
[Full Changelog](https://github.com/keypup-io/cloudtasker/compare/v0.8.2...v0.9.0)
|
|
6
13
|
|
data/README.md
CHANGED
|
@@ -635,7 +635,9 @@ If you enqueue this worker by omitting the second argument `MyWorker.perform_asy
|
|
|
635
635
|
- The `time_at` argument will be ignored by the `unique-job` extension, meaning that job uniqueness will be only based on the `user_id` argument.
|
|
636
636
|
|
|
637
637
|
### Handling big job payloads
|
|
638
|
-
|
|
638
|
+
Google Cloud Tasks enforces a limit of 100 KB for job payloads. Taking into accounts Cloudtasker authentication headers and meta information this leave ~85 KB of free space for JSONified job arguments.
|
|
639
|
+
|
|
640
|
+
Any excessive job payload (> 100 KB) will raise a `Cloudtasker::MaxTaskSizeExceededError`, both in production and development mode.
|
|
639
641
|
|
|
640
642
|
If you feel that a job payload is going to get big, prefer to store the payload using a datastore (e.g. Redis) and pass a reference to the job to retrieve the payload inside your job `perform` method.
|
|
641
643
|
|
data/lib/cloudtasker.rb
CHANGED
|
@@ -8,6 +8,7 @@ require 'cloudtasker/config'
|
|
|
8
8
|
require 'cloudtasker/authentication_error'
|
|
9
9
|
require 'cloudtasker/dead_worker_error'
|
|
10
10
|
require 'cloudtasker/invalid_worker_error'
|
|
11
|
+
require 'cloudtasker/max_task_size_exceeded_error'
|
|
11
12
|
|
|
12
13
|
require 'cloudtasker/middleware/chain'
|
|
13
14
|
require 'cloudtasker/authenticator'
|
|
@@ -48,6 +48,8 @@ module Cloudtasker
|
|
|
48
48
|
# @return [Cloudtasker::CloudTask] The created task.
|
|
49
49
|
#
|
|
50
50
|
def self.create(payload)
|
|
51
|
+
raise MaxTaskSizeExceededError if payload.to_json.bytesize > Config::MAX_TASK_SIZE
|
|
52
|
+
|
|
51
53
|
resp = backend.create(payload)&.to_h
|
|
52
54
|
resp ? new(resp) : nil
|
|
53
55
|
end
|
data/lib/cloudtasker/config.rb
CHANGED
|
@@ -9,6 +9,9 @@ module Cloudtasker
|
|
|
9
9
|
attr_writer :secret, :gcp_location_id, :gcp_project_id,
|
|
10
10
|
:gcp_queue_prefix, :processor_path, :logger, :mode, :max_retries
|
|
11
11
|
|
|
12
|
+
# Max Cloud Task size in bytes
|
|
13
|
+
MAX_TASK_SIZE = 100 * 1024 # 100 KB
|
|
14
|
+
|
|
12
15
|
# Retry header in Cloud Task responses
|
|
13
16
|
RETRY_HEADER = 'X-CloudTasks-TaskExecutionCount'
|
|
14
17
|
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Cloudtasker
|
|
4
|
+
# Handle Cloud Task size quota
|
|
5
|
+
# See: https://cloud.google.com/appengine/quotas#Task_Queue
|
|
6
|
+
#
|
|
7
|
+
class MaxTaskSizeExceededError < StandardError
|
|
8
|
+
MSG = 'The size of Cloud Tasks must not exceed 100KB'
|
|
9
|
+
|
|
10
|
+
def initialize(msg = MSG)
|
|
11
|
+
super
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
data/lib/cloudtasker/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cloudtasker
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.9.
|
|
4
|
+
version: 0.9.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Arnaud Lachaume
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-02-11 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -320,6 +320,7 @@ files:
|
|
|
320
320
|
- lib/cloudtasker/engine.rb
|
|
321
321
|
- lib/cloudtasker/invalid_worker_error.rb
|
|
322
322
|
- lib/cloudtasker/local_server.rb
|
|
323
|
+
- lib/cloudtasker/max_task_size_exceeded_error.rb
|
|
323
324
|
- lib/cloudtasker/meta_store.rb
|
|
324
325
|
- lib/cloudtasker/middleware/chain.rb
|
|
325
326
|
- lib/cloudtasker/redis_client.rb
|