Jestem nowy w użyciu Cloud9 IDE (c9) i jak na razie wygląda świetnie, z wyjątkiem kilku drobnych rzeczy.Jak deklarować porty w Cloud9 używając Pythona
Widzę z dokumentów, że aby uruchomić prosty serwer http node.js, musisz przekazać process.env.PORT zamiast zwykłego portu, takiego jak "8080".
Węzeł Hello World 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);
Co chcę wiedzieć jest, na C9, można rozpocząć jedynie na portach usługi przy użyciu JavaScript/node.js? Czy inne języki działają równie dobrze, być może z inną metodą przejścia przez port? Specyficznie python + Twisted?
Przesłałem trochę skręcony kod, który działał dla mnie lokalnie, ale nie działał na c9, ponieważ próbował uzyskać dostęp do lokalnych portów (które są już w użyciu). Tutaj jest błąd
twisted.internet.error.CannotListenError: Couldn't listen on any:8080: [Errno 98] Address already in use.
Jak należałoby zrobić następującą przykładową pracę, jeśli w ogóle możliwe, działa na c9?
Python + Twisted Hello World 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()
wyszukiwania Wstępne poprzez documentation i github issues nie odwrócił znacznie w górę. Mam nadzieję, że to możliwe i właśnie przegapiłem właściwy parametr do przekazania.
Edycja: Zaktualizowany wyjście poniżej
Kod Węzeł
console.log(process.env.PORT)
console.log(process.env.IP)
wyjście 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
Kod Python
import os
print os.environ["PORT"]
print os.environ["IP"]
wyjście Terminal
Running Python Process
8080
127.6.70.129
Twisted Kod
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()
Wyjście Terminal
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)
listenTCP TypeError jest dziwne, bo 2 argumenty działa lokalnie, ale nie na Cloud9. Nie rozumiem, dlaczego używanie tych argumentów nie działa.
Mam powyższy kod hostowany na this publicznego projektu Cloud9, aby każdy mógł go obejrzeć. Dzięki!
dzięki! Komendy os.environ * wyświetlają * te same wartości, co raporty node.js. Jednak wydaje się, że Python/Twisted nadal nie są wiążące dla portów. Myślę, że dzieje się tak albo z powodu argumentów podanych dla reactor.listenTCP (które daje błąd), albo dlatego, że platforma na to nie pozwala. – mrchampe
Przepraszamy, pomyłka w mojej odpowiedzi. –
To działa, dziękuję bardzo! – mrchampe