2017-02-11 69 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'))