Проблема с издателем при использовании Dataflow в движке приложения Google (ошибка типа: не удалось встроить файл протока в пул дескрипторов!) - PullRequest
0 голосов
/ 23 октября 2018

Я пытаюсь получить данные из Google Analytics и отправить их в pubsub.В потоке данных я читаю данные из pubsub и облачного хранилища Google, выполняю некоторое сравнение и, наконец, отправляю их в большой запрос.Пост, который я выполняю некоторые операции над большим запросом.Когда я запускал код в Pycharm IDE, он работал с некоторыми предупреждениями во время выполнения.Но когда я пытался запустить Google App Engine в облаке, я получаю следующую ошибку:

ERROR: (gcloud.app.deploy) Error Response: [9]
Application startup error:
return util.import_app(self.app_uri)
File "/env/local/lib/python2.7/site-packages/gunicorn/util.py", line 350, in 
import_app
__import__(module)
File "/home/vmagent/app/main.py", line 6, in <module>
from google.cloud import pubsub_v1
File "/env/local/lib/python2.7/site- 
packages/google/cloud/pubsub_v1/__init__.py", line 17, in <module>
from google.cloud.pubsub_v1 import types 
 google.pubsub.v1.Publisher.DeleteTopic: "google.pubsub.v1.DeleteTopicRequest" seems to be defined in "google/cloud/proto/pubsub/v1/pubsub.proto", which is not imported by "google/cloud/pubsub_v1/proto/pubsub.proto".  To use it here, please add the necessary import.

Моя папка состоит из следующих элементов:

analyticsreporting.dat  app.yaml  client_key.json  dataflow.py  dfpipe  GoBear.json  main.py  requirements.txt  setup.py  venv

app.yaml:

runtime: python
env: flex
service: dataflow-srihari
entrypoint: gunicorn -b :$PORT main:app
manual_scaling:
    instances: 1

Requirements.txt содержит стоп-код всего Python 2.7 для venv, который у меня есть в локальной системе, чтобы избежать путаницы.

proto-google-cloud-pubsub-v1==0.15.4
google-api-core==0.1.4
google-api-python-client==1.7.4
google-apitools==0.5.20 
google-auth==1.5.1
google-auth-httplib2==0.0.3
google-cloud==0.34.0
google-cloud-bigquery==0.30.0
google-cloud-core==0.28.1
google-cloud-logging==1.7.0
google-cloud-monitoring==0.30.1
google-cloud-pubsub==0.31.0
google-cloud-storage==1.13.0

Фрагмент кода:

from google.cloud import pubsub_v1
def pubsub_init():
    publisher=pubsub_v1.PublisherClient()
    topic="topicname"
    return (publisher,topic)

Нажать:

my_data1 = json.dumps(my_data)
    mydata = my_data1.encode('utf-8')
    publisher.publish(topic, mydata)

Для чтения из pubsub:

BQ_data1 = p_bq | 'readFromPubSub' >> beam.io.ReadFromPubSub(
    subscription='subname')

Пожалуйста, помогите мне избежать этой ошибки

...