Как объявить порты в Cloud9 с помощью Python
Я новичок в использованииCloud9 IDE (с9) и до сих пор выглядит великолепно, за исключением нескольких мелких вещей.
Из документации видно, что для запуска простого http-сервера node.js вы должны передать process.env.PORT вместо обычного порта, например "8080" .
Node Hello Worldпример:
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);
Что я хочу знать, так это то, что на c9 вы можете запускать службы только на портах, используя javascript / node.js? Или другие языки работают так же хорошо, возможно, с каким-то другим способом прохождения порта? Конкретно питон + витая?
Я загрузил какой-то искаженный код, который работал для меня локально, но нене работает на c9, потому что он пытается получить доступ к локальным портам (которые уже используются). Вот ошибка
twisted.internet.error.CannotListenError: Couldn't listen on any:8080: [Errno 98] Address already in use.
Как можно заставить работать следующий пример, если это возможно, работать на c9?
Python + Twisted Hello Worldпример
from twisted.web import server, resource
from twisted.internet import reactor
class Simple(resource.Resource):
isLeaf = True
def render_GET(self, request):
return "Hello, world!"
site = server.Site(Simple())
reactor.listenTCP(8080, site)
reactor.run()
Начальные поиски черездокументация и GitHubпроблемы не очень подняться. Я'Я надеюсь, что это возможно, и я просто пропустил правильный параметр для передачи.
Изменить: обновленный вывод ниже
Код узла
console.log(process.env.PORT)
console.log(process.env.IP)
Терминальный выход
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
import os
print os.environ["PORT"]
print os.environ["IP"]
Терминальный выход
Running Python Process
8080
127.6.70.129
Витой код
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 "Hello, world!"
site = server.Site(Simple())
reactor.listenTCP(int(os.environ["PORT"]), interface=os.environ["IP"])
reactor.run()
Терминальный выход
Running Python Process
hello world
Traceback (most recent call last):
File "python/hello.py", line 17, in
reactor.listenTCP(int(os.environ["PORT"]), interface=os.environ["IP"])
TypeError: listenTCP() takes at least 3 non-keyword arguments (2 given)
listenTCP Ошибка TypeError странная, поскольку 2 аргумента работают локально, но не в Cloud9. Я неЯ не понимаю, почему использование этих аргументов не работает.
У меня есть вышеуказанный код наэтот публичный проект Cloud9 для любого, чтобы посмотреть. Спасибо!