Browse Source

Fixes Unicode error in celery worker. Closes celery/kombu#274

Ask Solem 11 years ago
parent
commit
9c3fe17e7f

+ 1 - 1
celery/apps/beat.py

@@ -10,7 +10,7 @@
     and so on.
 
 """
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
 
 import socket
 import sys

+ 3 - 3
celery/apps/worker.py

@@ -10,7 +10,7 @@
     platform tweaks, and so on.
 
 """
-from __future__ import absolute_import, print_function
+from __future__ import absolute_import, print_function, unicode_literals
 
 import logging
 import os
@@ -25,7 +25,7 @@ from kombu.utils.encoding import safe_str
 
 from celery import VERSION_BANNER, platforms, signals
 from celery.exceptions import CDeprecationWarning, SystemTerminate
-from celery.five import string, string_t
+from celery.five import string, string_t, internal_string_t
 from celery.loaders.app import AppLoader
 from celery.app import trace
 from celery.utils import cry, isatty
@@ -311,7 +311,7 @@ def _shutdown_handler(worker, sig='TERM', how='Warm',
                                 'Cold': 'should_terminate'}[how], True)
             else:
                 raise exc()
-    _handle_request.__name__ = 'worker_' + how
+    _handle_request.__name__ = internal_string_t('worker_{0}'.format(how))
     platforms.signals[sig] = _handle_request
 install_worker_term_handler = partial(
     _shutdown_handler, sig='SIGTERM', how='Warm', exc=SystemExit,

+ 1 - 1
celery/bin/amqp.py

@@ -5,7 +5,7 @@ The :program:`celery amqp` command.
 .. program:: celery amqp
 
 """
-from __future__ import absolute_import, print_function
+from __future__ import absolute_import, print_function, unicode_literals
 
 import cmd
 import sys

+ 1 - 1
celery/bin/base.py

@@ -63,7 +63,7 @@ in any command that also has a `--detach` option.
     Optional directory to change to after detaching.
 
 """
-from __future__ import absolute_import, print_function
+from __future__ import absolute_import, print_function, unicode_literals
 
 import os
 import re

+ 1 - 1
celery/bin/events.py

@@ -35,7 +35,7 @@ The :program:`celery events` command.
     `ERROR`, `CRITICAL`, or `FATAL`.  Default is INFO.
 
 """
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
 
 import sys
 

+ 1 - 1
celery/bin/multi.py

@@ -91,7 +91,7 @@ Examples
     celery worker -n xuzzy@myhost -c 3
 
 """
-from __future__ import absolute_import, print_function
+from __future__ import absolute_import, print_function, unicode_literals
 
 import errno
 import os

+ 1 - 1
celery/bin/worker.py

@@ -130,7 +130,7 @@ The :program:`celery worker` command (previously known as ``celeryd``)
     Don't do execv after multiprocessing child fork.
 
 """
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
 
 import sys
 

+ 2 - 0
celery/five.py

@@ -58,6 +58,7 @@ if PY3:  # pragma: no cover
     map = map
     string = str
     string_t = str
+    internal_string_t = str  # used in fun.__name__ etc
     long_t = int
     text_t = str
     range = range
@@ -101,6 +102,7 @@ else:
     text_t = unicode
     long_t = long                   # noqa
     range = xrange
+    internal_string_t = str
     int_types = (int, long)
 
     open_fqdn = '__builtin__.open'

+ 3 - 2
celery/worker/job.py

@@ -27,7 +27,7 @@ from celery.exceptions import (
     SoftTimeLimitExceeded, TimeLimitExceeded,
     WorkerLostError, Terminated, Retry, Reject,
 )
-from celery.five import items, monotonic, string_t
+from celery.five import items, monotonic, string, string_t
 from celery.platforms import signals as _signals
 from celery.utils import fun_takes_kwargs
 from celery.utils.functional import noop
@@ -427,7 +427,8 @@ class Request(object):
                         self.id, exc, request=self,
                     )
                 elif isinstance(exc, Terminated):
-                    self._announce_revoked('terminated', True, str(exc), False)
+                    self._announce_revoked(
+                        'terminated', True, string(exc), False)
                     send_failed_event = False  # already sent revoked event
             # (acks_late) acknowledge after result stored.
             if self.task.acks_late: