深层错误开启插座.py:TypeError:需要浮点

2024-10-01 17:34:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了一个特性,通过芹菜异步运行一个任务,在本地进行了测试,一切都很好。当celery尝试使用这些任务时,它将失败,并返回以下回溯。在

我甚至不知道如何调试这个错误,因为它是由celery调用的,并且发生在python标准库的深处。有什么想法吗?在

Traceback (most recent call last):
  File "/home/ubuntu/hypnos-venv/local/lib/python2.7/site-packages/celery/app/trace.py", line 238, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/home/ubuntu/hypnos-venv/local/lib/python2.7/site-packages/celery/app/trace.py", line 416, in __protected_call__
    return self.run(*args, **kwargs)
  File "/home/ubuntu/Hypnos/hypnos/recs_jobber/tasks.py", line 5, in send_sms_action
    msg = twilio_client.sms.messages.create(body = sms_action.body, to=sms_action.to_number, from_=TW_NUMBER)
  File "/home/ubuntu/hypnos-venv/local/lib/python2.7/site-packages/twilio/rest/resources/sms_messages.py", line 167, in create
    return self.create_instance(kwargs)
  File "/home/ubuntu/hypnos-venv/local/lib/python2.7/site-packages/twilio/rest/resources/base.py", line 352, in create_instance
    data=transform_params(body))
  File "/home/ubuntu/hypnos-venv/local/lib/python2.7/site-packages/twilio/rest/resources/base.py", line 204, in request
    resp = make_twilio_request(method, uri, auth=self.auth, **kwargs)
  File "/home/ubuntu/hypnos-venv/local/lib/python2.7/site-packages/twilio/rest/resources/base.py", line 129, in make_twilio_request
    resp = make_request(method, uri, **kwargs)
  File "/home/ubuntu/hypnos-venv/local/lib/python2.7/site-packages/twilio/rest/resources/base.py", line 101, in make_request
    resp, content = http.request(url, method, headers=headers, body=data)
  File "/home/ubuntu/hypnos-venv/local/lib/python2.7/site-packages/httplib2/__init__.py", line 1570, in request
    (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
  File "/home/ubuntu/hypnos-venv/local/lib/python2.7/site-packages/httplib2/__init__.py", line 1317, in _request
    (response, content) = self._conn_request(conn, request_uri, method, body, headers)
  File "/home/ubuntu/hypnos-venv/local/lib/python2.7/site-packages/httplib2/__init__.py", line 1252, in _conn_request
    conn.connect()
  File "/home/ubuntu/hypnos-venv/local/lib/python2.7/site-packages/httplib2/__init__.py", line 1017, in connect
    sock.settimeout(self.timeout)
  File "/usr/lib/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
TypeError: a float is required

使用Celery的rdb进入帧,似乎没有设置套接字超时。在

^{pr2}$

有什么办法解决这个问题吗?错误来自Twilio->;httplib2->;插座.py它是一个到套接字的包装器。我不知道该怎么解决这个问题。在


Tags: inpyselfhomevenvrequestubuntulib
2条回答

事情是这样的:

  • 你告诉Twilio库创建一条短信。
  • Twilio转到httplib以连接到Twilio服务器。
  • httplib连接到Twilio服务器时,设置套接字的超时。

唯一的问题是,由于某些原因,倒数第二个堆栈帧中的self.timeout不是所需的float。您可能需要尝试在Python调试器下运行应用程序,例如:

python -m pdb myapp.py

您将得到一个提示,从中可以键入run来运行应用程序。一旦发生错误,它应该会让您返回到提示。然后,您应该能够键入up,直到到达有问题的帧并查看self.timeout是什么。然后,您可能想四处看看self.timeout是在哪里设置的,以及为什么。然后您应该能够通过修复该问题来解决该问题。在

默认情况下,Twilio的lib将timeout设置为:

class _UnsetTimeoutKls(object):
    """ A sentinel for an unset timeout. Defaults to the system timeout. """
    def __repr__(self):
        return '<Unset Timeout Value>'


# None has special meaning for timeouts, so we use this sigil to indicate
# that we don't care
UNSET_TIMEOUT = _UnsetTimeoutKls()

因此,在实例化TwilioRestClient和实际的socket调用之间一定发生了一些事情,该调用正在将_UnsetTimeoutKls计算为与None不同的东西。在

初始化TwilioRestClient时将timeout设置为None似乎可以修复错误:

^{pr2}$

相关问题 更多 >

    热门问题