Я использую библиотеку запросов python для разговора между двумя моими приложениями (django и ckan) внутри Azure VM (чистый ubuntu 12.04).Python Requests + Azure VM
И появляется очень связанная проволокой ошибка. Похоже, request.post
отправлен успешно, но в середине моего кода я получил 504 request timeout
.
Apache2, Nginx и Gunicorn (только тайм-аут) журналы чисты. Моя CKAN приложение бросает ту же ошибку, но с разными портами:
CKAN например, ошибка 1:
Exception happened during processing of request from ('127.0.0.1', 53555)
Traceback (most recent call last):
File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/paste/httpserver.py", line 1068, in process_request_in_thread
self.finish_request(request, client_address)
File "/usr/lib/python2.7/SocketServer.py", line 323, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/lib/python2.7/SocketServer.py", line 640, in __init__
self.finish()
File "/usr/lib/python2.7/SocketServer.py", line 693, in finish
self.wfile.flush()
File "/usr/lib/python2.7/socket.py", line 303, in flush
self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 32] Broken pipe
CKAN пример ошибки 2:
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 53344)
Traceback (most recent call last):
File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/paste/httpserver.py", line 1068, in process_request_in_thread
self.finish_request(request, client_address)
File "/usr/lib/python2.7/SocketServer.py", line 323, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/lib/python2.7/SocketServer.py", line 640, in __init__
self.finish()
File "/usr/lib/python2.7/SocketServer.py", line 693, in finish
self.wfile.flush()
File "/usr/lib/python2.7/socket.py", line 303, in flush
self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 32] Broken pipe
----------------------------------------
Как вы можете видеть порт всегда разные. Одна из моих мыслей - Azure закрыла все порты, если вы не укажете, какой из них вы хотите открыть.
У меня такая же база кода работает нормально локально.
Да, по умолчанию Azure linux VM отключает все порты, кроме 22, чтобы предотвратить входящие запросы из Интернета. вы можете попытаться указать порт приложения Django и настроить конечную точку другой виртуальной машины с помощью ckan. –