Skip to content

Commit 84da780

Browse files
Omer Katzauvipy
authored andcommitted
Only convert eta to isoformat when it is not already a string (celery#4565)
* Fixed celery#4560. * Added a test. * Remove fake now...
1 parent 3adfc49 commit 84da780

File tree

3 files changed

+9
-2
lines changed

3 files changed

+9
-2
lines changed

celery/app/amqp.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,8 @@ def as_task_v2(self, task_id, name, args=None, kwargs=None,
328328
expires = maybe_make_aware(
329329
now + timedelta(seconds=expires), tz=timezone,
330330
)
331-
eta = eta and eta.isoformat()
331+
if not isinstance(eta, string_t):
332+
eta = eta and eta.isoformat()
332333
# If we retry a task `expires` will already be ISO8601-formatted.
333334
if not isinstance(expires, string_t):
334335
expires = expires and expires.isoformat()

t/integration/test_canvas.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,6 @@ def test_chord_soft_timeout_recuperation(self, manager):
165165
result = c(delayed_sum.s(pause_time=0)).get()
166166
assert result == 3
167167

168-
@pytest.mark.xfail()
169168
def test_chain_error_handler_with_eta(self, manager):
170169
try:
171170
manager.app.backend.ensure_chords_allowed()

t/unit/app/test_amqp.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,13 @@ def test_expires_to_datetime(self):
359359
assert m.headers['expires'] == (
360360
now + timedelta(seconds=30)).isoformat()
361361

362+
def test_eta_to_datetime(self):
363+
eta = datetime.utcnow()
364+
m = self.app.amqp.as_task_v2(
365+
uuid(), 'foo', eta=eta,
366+
)
367+
assert m.headers['eta'] == eta.isoformat()
368+
362369
def test_callbacks_errbacks_chord(self):
363370

364371
@self.app.task

0 commit comments

Comments
 (0)