hi all, I'm getting a "TypeError: can't compare offset-naive and
offset-aware datetimes" when attempting to update a database table value(in
a celery task), even though I'm pretty sure both dates in question are
offset-aware.
here is the stack trace of the issue:
[2014-08-02 12:10:52,264: ERROR/MainProcess] Task
lrd.queue.tasks.fetch_rss_posts[d774aa85-043f-4aaf-928b-94c8a846b33e]
raised unexpected: TypeError("can't compare offset-naive and offset-aware
datetimes",)
Traceback (most recent call last):
File
"/Users/Shared/webapp/lrd_env/lib/python2.7/site-packages/celery-3.1.13-py2.7.egg/celery/app/trace.py",
line 240, in trace_task
R = retval = fun(*args, **kwargs)
File
"/Users/Shared/webapp/lrd_env/lib/python2.7/site-packages/celery-3.1.13-py2.7.egg/celery/app/trace.py",
line 437, in __protected_call__
return self.run(*args, **kwargs)
* File "/Users/Shared/webapp/lrd_env/lrd/lrd/queue/tasks.py", line 61, in
fetch_rss_posts*
feed.latestpost = utc_pub_time
File "/usr/local/lib/python2.7/site-packages/transaction/_manager.py",
line 120, in __exit__
self.commit()
File "/usr/local/lib/python2.7/site-packages/transaction/_manager.py",
line 111, in commit
return self.get().commit()
File
"/usr/local/lib/python2.7/site-packages/transaction/_transaction.py", line
280, in commit
reraise(t, v, tb)
File
"/usr/local/lib/python2.7/site-packages/transaction/_transaction.py", line
271, in commit
self._commitResources()
File
"/usr/local/lib/python2.7/site-packages/transaction/_transaction.py", line
417, in _commitResources
reraise(t, v, tb)
File
"/usr/local/lib/python2.7/site-packages/transaction/_transaction.py", line
389, in _commitResources
rm.tpc_begin(self)
File
"/Users/Shared/webapp/lrd_env/lib/python2.7/site-packages/zope.sqlalchemy-0.7.5-py2.7.egg/zope/sqlalchemy/datamanager.py",
line 90, in tpc_begin
self.session.flush()
File
"/Users/Shared/webapp/lrd_env/lib/python2.7/site-packages/sqlalchemy/orm/session.py",
line 1907, in flush
self._flush(objects)
File
"/Users/Shared/webapp/lrd_env/lib/python2.7/site-packages/sqlalchemy/orm/session.py",
line 2025, in _flush
transaction.rollback(_capture_exception=True)
File
"/Users/Shared/webapp/lrd_env/lib/python2.7/site-packages/sqlalchemy/util/langhelpers.py",
line 57, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File
"/Users/Shared/webapp/lrd_env/lib/python2.7/site-packages/sqlalchemy/orm/session.py",
line 1989, in _flush
flush_context.execute()
File
"/Users/Shared/webapp/lrd_env/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.py",
line 371, in execute
rec.execute(self)
File
"/Users/Shared/webapp/lrd_env/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.py",
line 524, in execute
uow
File
"/Users/Shared/webapp/lrd_env/lib/python2.7/site-packages/sqlalchemy/orm/persistence.py",
line 54, in save_obj
table, states_to_update)
File
"/Users/Shared/webapp/lrd_env/lib/python2.7/site-packages/sqlalchemy/orm/persistence.py",
line 343, in _collect_update_commands
attributes.PASSIVE_NO_INITIALIZE)
File
"/Users/Shared/webapp/lrd_env/lib/python2.7/site-packages/sqlalchemy/orm/attributes.py",
line 1387, in get_state_history
return state.get_history(key, passive)
File
"/Users/Shared/webapp/lrd_env/lib/python2.7/site-packages/sqlalchemy/orm/state.py",
line 264, in get_history
return self.manager[key].impl.get_history(self, self.dict, passive)
File
"/Users/Shared/webapp/lrd_env/lib/python2.7/site-packages/sqlalchemy/orm/attributes.py",
line 661, in get_history
return History.from_scalar_attribute(self, state, dict_[self.key])
File
"/Users/Shared/webapp/lrd_env/lib/python2.7/site-packages/sqlalchemy/orm/attributes.py",
line 1280, in from_scalar_attribute
elif attribute.is_equal(current, original) is True:
File
"/Users/Shared/webapp/lrd_env/lib/python2.7/site-packages/sqlalchemy/sql/type_api.py",
line 207, in compare_values
return x == y
*TypeError: can't compare offset-naive and offset-aware datetimes*
I'm comparing the date of the rss feed items published date with the
latestpost of the rss feed. I ensure that the dates generated have
pytz.UTC() added. Note the actual issue happens in line 61 of
fetch_rss_posts task. Here is the py source of the tasks:
http://pastebin.com/FPNvHLp4
note on line 61 I'm simply doing
feed.latestpost = utc_pub_time
I generate latestpost in an alembic migration script, of which I'm sure I'm
adding offset information with pytz.UTC() here is how I generate the
RssFeed member, latest_post on line 32:
http://pastebin.com/eN2kipVs
Here is some logging:
http://pastebin.com/Vb31bCP6
Another interesting thing is, the issue doesn't actually occur until after
the rss feed completely parsed.
Any ideas?
Michael
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy-alembic" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.