我正在创建一个GroupMe机器人,并且正在测试到目前为止已设置的回调URL和基本WSGI应用程序。我计划在Heroku上托管该机器人,但首先要在我的本地计算机上对其进行测试。我注册了一个带有回调URL http://MY_IP_ADDRESS:8000
的漫游器。当我打开其他外壳并在Python解释器中运行requests.post('http://MY_IP_ADDRESS:8000', data = 'something')
时,一切正常。但是,当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()
我确定自己在做一些显而易见的事情,但是我一生都无法弄清楚该做什么。我将不胜感激!
答案 0 :(得分:0)
我从不知道为什么回调URL无法与localhost一起使用,但是当我在Heroku上部署应用程序时,一切正常!它一定与我的防火墙设置有关。
答案 1 :(得分:0)
当您在本地计算机上运行服务器时,防火墙并非如此。 GroupMe也只能发送给面向公众的收件人,因此无法发送给其他任何人,这就是Heroku工作的原因。我将来建议的一件事是使用Ngrok,https://ngrok.com/可以与您的服务器配合使用,在您的计算机上提供一个面向公众的地址,您可以将其用作回调URL。我使用Ngrok来测试我的机器人并快速迭代,然后再推送到类似Heroku的专用服务器上,老实地查看Heroku日志文件是很痛苦的...