Sono nuovo nell'uso di Cloud9 IDE (c9) e finora sembra fantastico, tranne alcune cose minori.Come dichiarare le porte in Cloud9 usando Python
Vedo dai documenti che per avviare un semplice server http node.js, devi passare in process.env.PORT al posto della porta regolare come "8080".
Nodo Ciao Mondo example:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(process.env.PORT, process.env.IP);
Quello che voglio sapere è, in C9, si può iniziare solo servizi sulle porte utilizzando JavaScript/node.js? O altre lingue funzionano altrettanto bene, forse con qualche altro metodo per passare la porta? Specificamente python + Twisted?
Ho caricato un codice per codice che funzionava localmente per me, ma non funzionava su c9 perché stava tentando di accedere alle porte locali (che sono già in uso). Ecco l'errore
twisted.internet.error.CannotListenError: Couldn't listen on any:8080: [Errno 98] Address already in use.
Come si può far funzionare il seguente esempio, se possibile, in esecuzione su c9?
Python + ritorto Ciao Mondo example
from twisted.web import server, resource
from twisted.internet import reactor
class Simple(resource.Resource):
isLeaf = True
def render_GET(self, request):
return "<html>Hello, world!</html>"
site = server.Site(Simple())
reactor.listenTCP(8080, site)
reactor.run()
ricerche iniziali attraverso il github issuesdocumentation e non girare molto in su. Spero che sia possibile e ho appena perso il parametro giusto per passare.
Modifica: Aggiornato uscita sotto
Nodo Codice
console.log(process.env.PORT)
console.log(process.env.IP)
uscita Terminal
Running Node Process
Tip: you can access long running processes, like a server, at 'http://private-cloud.mrchampe.c9.io'.
Important: in your scripts, use 'process.env.PORT' as port and 'process.env.IP' as host.
8080
127.6.70.129
Python Codice
import os
print os.environ["PORT"]
print os.environ["IP"]
uscita Terminal
Running Python Process
8080
127.6.70.129
codice ritorto
import os
import twisted
from twisted.web import server, resource
from twisted.internet import reactor
class Simple(resource.Resource):
isLeaf = True
def render_GET(self, request):
return "<html>Hello, world!</html>"
site = server.Site(Simple())
reactor.listenTCP(int(os.environ["PORT"]), interface=os.environ["IP"])
reactor.run()
terminale di uscita
Running Python Process
hello world
Traceback (most recent call last):
File "python/hello.py", line 17, in <module>
reactor.listenTCP(int(os.environ["PORT"]), interface=os.environ["IP"])
TypeError: listenTCP() takes at least 3 non-keyword arguments (2 given)
Il listenTCP TypeError è strano perché 2 argomenti funziona in locale ma non su Cloud9. Non vedo perché l'uso di questi argomenti non funzioni.
Ho il codice sopra ospitato su this progetto pubblico Cloud9 per chiunque di dare un'occhiata. Grazie!
Grazie! I comandi os.environ * stanno * mostrando gli stessi valori dei rapporti node.js. Tuttavia, sembra che Python/Twisted non stiano ancora collegandosi alle porte. Penso che questo sia a causa degli argomenti dati a reactor.listenTCP (che dà un errore), o perché la piattaforma non lo consente. – mrchampe
Scusa, errore nella mia risposta. –
Funziona, grazie mille! – mrchampe