2017-08-13 6 views
1

をインポートするときに私は依存関係は、アプリケーションが実行されている仮想環境内にインストールされて確認することができ、私はGoogle App Engineのdev_appserver.py例外IOError apache_beam

import apache_beam 

を行う瞬間を破るApp Engineアプリケーションを持っている。から判断すると、それ以下のスタックトレースは何らかの理由で/ dev/nullにアクセスしようとしているように見えますが失敗します。

INFO  2017-08-13 13:03:37,980 stubs.py:50] Sandbox prevented access to file "/home/raul/Downloads/google-cloud-sdk" 
INFO  2017-08-13 13:03:37,980 stubs.py:51] If it is a static file, check that `application_readable: true` is set in your app.yaml 
INFO  2017-08-13 13:03:37,980 stubs.py:50] Sandbox prevented access to file "/home/raul/Downloads/google-cloud-sdk/platform" 
INFO  2017-08-13 13:03:37,980 stubs.py:51] If it is a static file, check that `application_readable: true` is set in your app.yaml 
INFO  2017-08-13 13:03:38,260 stubs.py:50] Sandbox prevented access to file "/dev/null" 
INFO  2017-08-13 13:03:38,260 stubs.py:51] If it is a static file, check that `application_readable: true` is set in your app.yaml 
ERROR 2017-08-13 13:03:38,261 wsgi.py:263] 
Traceback (most recent call last): 
    File "/home/raul/Downloads/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 240, in Handle 
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler()) 
    File "/home/raul/Downloads/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler 
    handler, path, err = LoadObject(self._handler) 
    File "/home/raul/Downloads/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 85, in LoadObject 
    obj = __import__(path[0]) 
    File "/home/raul/Documents/football/main.py", line 7, in <module> 
    import apache_beam 
    File "/home/raul/Documents/football/env/lib/python2.7/site-packages/apache_beam/__init__.py", line 75, in <module> 
    import apache_beam.internal.pickler 
    File "/home/raul/Documents/football/env/lib/python2.7/site-packages/apache_beam/internal/pickler.py", line 38, in <module> 
    import dill 
    File "/home/raul/Documents/football/env/lib/python2.7/site-packages/dill/__init__.py", line 27, in <module> 
    from .dill import dump, dumps, load, loads, dump_session, load_session, \ 
    File "/home/raul/Documents/football/env/lib/python2.7/site-packages/dill/dill.py", line 165, in <module> 
    FileType = type(open(os.devnull, 'rb', buffering=0)) 
    File "/home/raul/Downloads/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/python/stubs.py", line 260, in __init__ 
    raise IOError(errno.EACCES, 'file not accessible', filename) 
IOError: [Errno 13] file not accessible: '/dev/null' 

何が原因で発生する可能性があり、修正する方法はありますか?

+0

Googleのクラウド環境やローカル環境に展開しましたか?理由は、私もappronineを介してデータフローパイプを実行するcronを追加しようとしていると私を助けるだろう。 :) – Anuj

+0

私はサンドボックスの制限のために、最初に開発サーバー上で実行することができなかったので、それを展開することはできませんでした。柔軟な環境は、この種のユースケースのために行く方法のようです –

答えて

1

GAE Python sandboxは、あなたのアプリケーションコードが何をすることができるかに関して非常に制限的です。 apache-beamで使用されているdillパッケージが、サンドボックスで許可されていない特別なファイル(この場合は/dev/nullデバイスファイル)にアクセスする必要があるようです。

すべてのサンドボックス要件を満たすようにコードを変更するか、許容度の高いthe flexible environmentを使用してください(ただし、全体的には違う獣です)。 Choosing an App Engine EnvironmentおよびMigrating Services from the Standard Environment to the Flexible Environmentを参照してください。

サイドノート:トレースバックは、ローカルシステムインストールからapache-beamを実行しようとしたことを示します。これも標準環境では動作しません。アプリケーションに付属させる必要があります。Installing a third-party libraryを参照してください。