abc def foo bar
abc def foo bar

Reputation: 2388

Celery Internal error with 'i' format

I get the error below when I try to execute a task with celery and amqp, is there a problem with my configuration. How do I fix this?

[2012-06-12 16:49:37,231: CRITICAL/MainProcess] Task core.tasks.sanity[c44c8058-46d1-48cd-a687-0481f5bd5ee5] INTERNAL ERROR: error("'i' format requires -2147483648 <= number <= 2147483647",)
Traceback (most recent call last):
  File "/nobackup/vivenara/pyenv/lib/python2.7/site-packages/celery/execute/trace.py", line 192, in trace_task
    R = I.handle_error_state(task, eager=eager)
  File "/nobackup/vivenara/pyenv/lib/python2.7/site-packages/celery/execute/trace.py", line 91, in handle_error_state
    }[self.state](task, store_errors=store_errors)
  File "/nobackup/vivenara/pyenv/lib/python2.7/site-packages/celery/execute/trace.py", line 114, in handle_failure
    task.backend.mark_as_failure(req.id, exc, self.strtb)
  File "/nobackup/vivenara/pyenv/lib/python2.7/site-packages/celery/backends/base.py", line 96, in mark_as_failure
    traceback=traceback)
  File "/nobackup/vivenara/pyenv/lib/python2.7/site-packages/celery/backends/base.py", line 229, in store_result
    return self._store_result(task_id, result, status, traceback, **kwargs)
  File "/nobackup/vivenara/pyenv/lib/python2.7/site-packages/celery/backends/amqp.py", line 121, in _store_result
    "traceback": traceback})
  File "/nobackup/vivenara/pyenv/lib/python2.7/site-packages/kombu/connection.py", line 272, in _ensured
    return fun(*args, **kwargs)
  File "/nobackup/vivenara/pyenv/lib/python2.7/site-packages/celery/backends/amqp.py", line 97, in _publish_result
    self._create_producer(task_id, connection).publish(meta)
  File "/nobackup/vivenara/pyenv/lib/python2.7/site-packages/celery/backends/amqp.py", line 87, in _create_producer
    self._create_binding(task_id)(connection.default_channel).declare()
  File "/nobackup/vivenara/pyenv/lib/python2.7/site-packages/kombu/entity.py", line 386, in declare
    self.queue_declare(nowait, passive=False)
  File "/nobackup/vivenara/pyenv/lib/python2.7/site-packages/kombu/entity.py", line 408, in queue_declare
    nowait=nowait)
  File "/nobackup/vivenara/pyenv/lib/python2.7/site-packages/amqplib/client_0_8/channel.py", line 1376, in queue_declare
    args.write_table(arguments)
  File "/nobackup/vivenara/pyenv/lib/python2.7/site-packages/amqplib/client_0_8/serialization.py", line 378, in write_table
    table_data.write(pack('>i', v))
error: 'i' format requires -2147483648 <= number <= 2147483647

Upvotes: 1

Views: 510

Answers (1)

Tisho
Tisho

Reputation: 8482

Value overflow when storing a result:

error: 'i' format requires -2147483648 <= number <= 2147483647

A bigint/long value is being written into the AMQP queue, while it recognizes it as int. It is not a configuration issue I believe. What is the value you try to save as a result?

I see in the stack trace:

return self._store_result(task_id, result, status, traceback, **kwargs)

Can you check what is the result value? Probably this is some strange value...

EDIT:

task.backend.mark_as_failure(req.id, exc, self.strtb)

So in this case it returns exc as result:

def mark_as_failure(self, task_id, exc, traceback=None):
        """Mark task as executed with failure. Stores the execption."""
        return self.store_result(task_id, exc, status=states.FAILURE,
                                 traceback=traceback)

Could it be the thrown exception from the task to contain a bigint status code?

Upvotes: 2

Related Questions