0

我正在创建一个 GroupMe 机器人,并且正在测试回调 URL 和到目前为止我设置的基本 WSGI 应用程序。我计划在 Heroku 上托管机器人,但首先在我的本地机器上对其进行测试。我用回调 URL 注册了一个机器人http://MY_IP_ADDRESS:8000。当我打开另一个 shell 并requests.post('http://MY_IP_ADDRESS:8000', data = 'something')在 Python 解释器中运行时,一切正常。但是,当 GroupMe 组中有活动时,什么也没有发生,甚至没有错误消息。

这是我的(简化的)代码:

from wsgiref.simple_server import make_serve  

def app(environ, startResponse):

    try:
        requestBodySize = int(environ.get('CONTENT_LENGTH', 0))
    except ValueError:
        requestBodySize = 0

    # requestBody = environ['wsgi.input'].read(requestBodySize)
    print('something') 

    responseBody = bytes('successful', 'utf-8') 

    status = '200 OK'
    responseHeaders = [('Content-Type', 'text/plain'), ('Content-Length', str(len(responseBody)))]

    startResponse(status, responseHeaders)

    return [responseBody]

server = make_server('', 8000, app)
server.serve_forever()

我确定我正在做一些显而易见的事情,但我无法终生弄清楚是什么。我会很感激任何帮助!

4

2 回答 2

0

当您在本地计算机上运行服务器时,您的防火墙并不真正喜欢这样。GroupMe 也不能发送给任何面向公众的收件人,这就是 Heroku 工作的原因。我将来可以推荐的一件事是使用 Ngrok,https: //ngrok.com/这将与您的服务器一起在您的计算机上创建一个面向公众的地址,您可以将其用作回调 url。我使用 Ngrok 测试我的机器人并在推送到像 Heroku 这样的专用服务器之前快速迭代,老实说查看 Heroku 日志文件是一种痛苦......

于 2020-09-11T00:01:07.800 回答
0

我从来不知道为什么回调 URL 不能与 localhost 一起使用,但是当我在 Heroku 上部署应用程序时,一切正常!它一定与我的防火墙设置有关。

于 2019-07-06T13:28:31.753 回答