2017-02-11 3 views
1

Я использую Django. Таким образом, есть опция CELERY_ALWAYS_EAGER. Когда я выключаю работников сельдерея с CELERY_ALWAYS_EAGER = True, все в порядке.TypeError только с сельдереем

Когда CELERY_ALWAYS_EAGER = False я получаю сообщение об ошибке:

TypeError: unsupported operand type(s) for -: 'unicode' and 'unicode' 

Это ошибка при попытке вычесть один штамп времени от другого. Smth like: new_date - old_date

Что случилось с сельдереем? Как я могу избежать этого?

ответ

0

Я действительно не понимаю, почему это происходит, в двигателе сельдерея.

Вот как с этим справиться. Я вычислил эти временные метки в одной задаче, а затем передал их в качестве аргументов для других задач сельдерея. Итак, когда CELERY_ALWAYS_EAGER = True они прошли как обычно datestamp. Когда CELERY_ALWAYS_EAGER = False, они прошли как unicode.

После проверки решить эту проблему:

if isinstance(newest_date, unicode): 
    old_date = pytz.utc.localize(
     datetime.datetime.strptime(old_date, '%Y-%m-%dT%H:%M:%S%fZ')) 
    new_date = pytz.utc.localize(
     datetime.datetime.strptime(new_date, '%Y-%m-%dT%H:%M:%S%fZ'))