2013-11-26 5 views
2

Я работаю над приложением, которое запускается в Google приложении. Как правило, мне придется активировать оплату/оплату, если я использую Google Cloud SQL. Поэтому для начала я решил удаленно подключиться к базе данных mysql на другом сервере. Он отлично работает в автономном режиме, но после развертывания моего приложения он не работает. Очевидно, что GAE не поддерживает удаленные подключения ... Есть ли другой способ обойти это? туннелирование?Подключение к удаленной базе данных MySQL в приложении Google

NB: Использование API HTTP для возврата информации из моей базы данных ... потребует дополнительных усилий по программированию.

ответ

2

К сожалению, App Engine не поддерживает внешние вызовы:

Приложение Engine App не может:

запись в файловой системе. Приложения PHP могут использовать Google Cloud Storage для хранения постоянных файлов. Разрешено чтение из файловой системы, и все файлы приложений, загруженные с помощью приложения.

открыть сокет или получить доступ к другому хосту напрямую. Приложение может использовать сервис URL-запроса URL-адреса App Engine, чтобы HTTP и HTTPS-запросы отправляли другим хостам на портах 80 и 443 соответственно.

ответ медленно. Веб-запрос к приложению должен обрабатываться в пределах через несколько секунд. Процессы, на которые требуется очень много времени для ответа, - , завершенные, чтобы избежать перегрузки веб-сервера.

делать другие виды системных вызовов.

+1

Спасибо. Я бы пытался использовать Cloud SQL –

7

В 1.8.8 мы предоставили возможность использовать удаленные сокеты из PHP.

Вам необходимо убедиться, что ваше приложение имеет возможность выставления счетов для удаленных сокетов. После этого вы сможете подключиться к удаленной базе данных MySQL из своего приложения-движка.

+0

, это также случай с Python? У меня есть db non-CloudSQL MySQL, с которым мне нужно подключиться из среды выполнения Python. – Yahel

+0

Я не знаю наверняка, я не понимаю, почему нет - удаленные сокеты позволяют подключаться к любой службе через tco/ip. –

0

Что сказал Стюарт Лэнгли, также относится к Python.

У вас должен быть выставлен счет, чтобы использовать удаленные сокеты. Но из моего эксперимента MySQLdb, входящий в состав среды выполнения App Engine, кажется, не работает с внешней базой данных MySQL.

Вы можете использовать чистую библиотеку python mysql-connector-python, предоставляемую Oracle. Но будьте осторожны, латентность высока (если вы открываете новое соединение для каждого запроса, общая латентность может составлять 5 секунд плюс). Может быть, потому, что удаленный сокет не является собственной версией, а скорее прокси или сервисом под крючком.

Смежные вопросы