iT邦幫忙

0

想要將twisted server 放到 Heroku(已解決)

  • 分享至 

  • twitterImage

想請問有接觸過 Heroku twisted 的人
我在自己的電腦已經測試過 twisted的 code
當client去呼叫server時
server會回傳訊息給client

把server的code搬到 heroku後
1.要怎麼啟動他?
2.要怎麼設定ip?
我的目的是想把server放到heroku上能讓client呼叫他並回傳訊息,不一定要用網頁

我使用 git clone heroku 官方的程式碼
Getting Started on Heroku with Python
下載後做的步驟
1.在requirements.txt裡增加 twisted==1.6.0
2.在Procfile 裡增加 worker: python server.py runserver 0.0.0.0:5000(server.py 是 twisted的code)
3.git push heroku master
4.到網頁 Resources去啟動 worker: python manage.py runserver 0.0.0.0:5000
有試過在client.py 的 connectTCP設定("0.0.0.0",5000,f),但是沒反應
按了 open app 時會出現錯誤訊息(不過我本來沒有要用網頁....)
log ↓↓↓

at=error code=H14 desc="No web processes running" method=GET path="/" host=bitserver.herokuapp.com request_id=778e3bd2-310d-4d8d-aa75-737a1d89efdc fwd="220.130.40.2" dyno= connect= service= status=503 bytes=

server.py ↓↓↓

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()

client.py ↓↓↓

from twisted.internet import protocol, reactor

class KnockClient(protocol.Protocol):

	def connectionMade(self):
		self.transport.write("Hey, Heroku!")

	def dataReceived(self, data):
		if data.startswith("Hi, please wait..."):
			print ("Heroku:",data)
			self.transport.loseConnection()
			reactor.stop()
		else:
			print ("Heroku:",data)
			self.transport.loseConnection()
			reactor.stop()
		
class KnockFactory(protocol.ClientFactory):
	protocol = KnockClient
	
def main():
	f = KnockFactory()
	reactor.connectTCP("0.0.0.0", 5000, f)
	reactor.run()
	
if __name__ == '__main__':
	main()
饅頭 iT邦新手 4 級 ‧ 2017-03-02 09:11:50 檢舉
我在其他論壇得到答案了
```
只有Web進程類型可以接收連接,需要使用Web服務器相同的方式設置任何服務器,即,綁定到0.0.0.0:$PORT。
```
所以沒辦法不用web
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答