我正在尝试实现一个消息队列系统来将操作推送到AdWords API。在
class Call(object):
@celery.task(filter=task_method)
def MUTATE(self, operations):
assert hasattr(self, '__throwaway_service')
with self.__throwaway_service as sm:
response = sm.mutate(operations)
return response
因为我不能将服务实例用作参数(服务有向API发送“get”或“mutate”请求的方法),所以我将其设置为外部属性,并在该特定服务的所有操作都发送到MQ时将其删除。在
“操作”是包含字符串或unicode键和值的字典列表。在
我还是得到
^{pr2}$我得到这个错误是因为celery任务使用的是实例方法吗?实现这一点的最佳方式是什么?在
操作中可能有一个对象。在将对象传递给celery任务之前,需要将对象处理为字典或其他本机类型。在
要运行此
MUTATE
任务,必须将Call
的实例传递给队列。我想您的调用,包含诸如__throwaway_service
这样的奇特方法,很难被选中。所以您必须重新设计您的任务,在任务中重新构造self
对象,然后应用原始的MUTATE
。在另外,您可能会发现this reciepe有助于确定哪些对象不能被pickle。在
更新
这种模式是否适用:
相关问题 更多 >
编程相关推荐