Django-RQ + Braintree:提交结算

Django-RQ + Braintree: Submit for settlement

我已经阅读了这个 Whosebug Q&A 但它对我的情况不起作用。

在我的场景中,我使用优秀的包 django-rq 将函数 (submit_transaction_for_settlement(transaction_id)) 推送到 redis 队列。该函数的作用是提交交易进行结算。

在沙箱中,每当执行此函数时,我都会收到相同的错误:AttributeError: type object 'Configuration' has no attribute 'environment'

我在我的函数中尝试了 agf's proposal 关于 instantiate a new gateway for each transaction,但没有成功!

可能跟redis队列的环境或者worker环境有关?

def submit_transaction_for_settlement(transaction_id):
    from braintree import Configuration, BraintreeGateway

    config = Configuration(environment=settings.BRAINTREE_ENVIRONMENT, merchant_id=settings.BRAINTREE_MERCHANT_ID,
                                   public_key=settings.BRAINTREE_PUBLIC_KEY, private_key=settings.BRAINTREE_PRIVATE_KEY)
    gateway = BraintreeGateway(config=config)
    result = gateway.transaction.submit_for_settlement(transaction_id)

啊!

我讨厌回答问题的时刻和找到解决方案后的几分钟!

错误出在命令 运行 和 rqworker. I was using the command python manage.py rqworker --worker-class rq.SimpleWorker because I had this issue 中,因为我使用了 python 2.7(或其他原因导致此问题)。产生这个问题的命令是 python manage.py rqworker.

现在升级到 python 3.4,最后一个命令非常有效! 所以,运行 python manage.py rqworker 成功了,没有这样的错误!