2017-03-03 44 views
0

我是Twisted web服務器和Heroku的新手。想要在Heroku上使用Twisted web服務器

我想在Heroku

使用雙絞線Web服務器我使用這樣

from twisted.internet import protocol, reactor 
import os 
class Knock(protocol.Protocol): 
    def dataReceived(self, data): 
     print 'Client:', data 
     if data.startswith("Hey, Heroku!"): 
      response = "Hi, please wait..." 
      self.transport.write(response) 
     else: 
      response = "I don't know who you are!" 
      self.transport.write(response) 

class KnockFactory(protocol.Factory): 
    def buildProtocol(self, addr): 
     return Knock() 

reactor.listenTCP(5000, KnockFactory()) 
reactor.run() 

我該怎麼做才能連接在Heroku服務器的客戶端代碼?

更新2017年3月19日

我用例子來修改從Python and Django on Heroku

我設定的端口:在我的代碼5000,但端口返回從開擴應用程序隨機的。

我仍然無法連接Heroku上的服務器。 :(

app.py

import os 
from flask import Flask 
from twisted.internet import protocol, reactor 
app = Flask(__name__) 

@app.route("/") 
def hello(): 
    return "Hello from Python Twisted ! Heroku server started on port: %s" % port 

class Knock(protocol.Protocol): 
    def dataReceived(self, data): 
     return "Client:", data 
     if data.startswith("Hey, Heroku!"): 
      response = "Hi, please wait..." 
      self.transport.write(response) 
     else: 
      response = "I don't know who you are!" 
      self.transport.write(response) 

class KnockFactory(protocol.Factory): 
    def buildProtocol(self, addr): 
     return Knock() 

if __name__ == "__main__": 
    port = int(os.environ.get("PORT", 5000)) 
    app.run(host='0.0.0.0', port=port) 
    reactor.listenTCP(port, KnockFactory()) 
    reactor.run() 
+0

@ JohnZwinck你能幫助我嗎? – soysoy

回答

0

的Heroku告訴你的使用環境變量聽哪個端口。

您應該int(os.environ["PORT"])聽的硬編碼端口8080代替。

+0

對不起...我不知道你的意思,你的意思是我必須在heroku上設置環境變量,不是嗎? – soysoy

+0

更新中的「應用程序崩潰」似乎很重要。 –

+0

你h想知道爲什麼「應用程序崩潰」?我去[Heroku錯誤代碼](https://devcenter.heroku.com/articles/error-codes#r10-boot-timeout)看我的錯誤,但我不知道如何解決這個錯誤。 – soysoy