2015-05-20 13 views
7

Próbuję połączyć się Firebase z App Engine, ale ja dostaję ten błąd podczas próby importowania Firebase pomocą Pythona Firebase Wrapper:Łączenie Firebase od Pythona Google App Engine

File "C:\_dev\PycharmProjects\myapp\project\project_handler.py", line 31, in <module> 
from firebase import firebase 
File "C:\_dev\PycharmProjects\myapp\external\firebase\__init__.py", line 3, in <module> 
from .async import process_pool 
File "C:\_dev\PycharmProjects\myapp\external\firebase\async.py", line 1, in <module> 
import multiprocessing 
File "C:\PYTHON27\lib\multiprocessing\__init__.py", line 65, in <module> 
from multiprocessing.util import SUBDEBUG, SUBWARNING 
File "C:\PYTHON27\lib\multiprocessing\util.py", line 40, in <module> 
from subprocess import _args_from_interpreter_flags 
ImportError: cannot import name _args_from_interpreter_flags 

Inne ludzie wydają się mieć same issue, ale nigdzie nie mogłem znaleźć odpowiedzi.

Odpowiedz

4

Domyślnie firebase Pythona używa pakietu wieloprocesorowego do wątkowania. Domyślnie AppEngine blokuje wszystkie połączenia wieloprocesorowe. AppEngine wykonuje swoją własną formę przetwarzania wieloprocesowego, tworząc kolejki zadań i przestawiając inne wystąpienia aplikacji po załadowaniu.

Utworzyłem pakiet python-firebase-gae, aby poradzić sobie z tym problemem.

0

Pakiet pip Python-firebase zależy od pakietu pip "requests", który nie jest dostępny w python GAE. Dostępny jest tylko pakiet urlfetch (docs https://cloud.google.com/appengine/docs/python/urlfetch/).

Możesz więc zaimplementować swój własny kod Pythona, aby wysyłać żądania bezpośrednio do apletu REST aplikacji firebase przy użyciu urlfetch ... lub aby umożliwić ponowne użycie, ty lub ktoś może mieć wersję python-firebase, która używa urlfetch zamiast żąda biblioteki.

+2

Nie dokładnie. Możesz instalować biblioteki stron trzecich za pomocą pip w GAE. https://cloud.google.com/appengine/docs/python/tools/using-libraries-python-27#installing_a_library, w tym żądania, tak naprawdę biblioteka, z której korzysta @javva, musi być zainstalowana w ten sposób. Problemem wydaje się być biblioteka Pythona-firebase wykorzystująca proces wieloprocesowy, gdy GAE na to nie pozwala. – Ivancho

2

Istnieje teraz projekt python-firebase-gae, który opiera się na pobraniu adresu URL i nie zależy od żadnych ograniczonych pakietów.