简体   繁体   中英

python dialogflow_v2 is extremely slow

Best,

At the moment I'm experimenting with the dialogflow_v2 package and I've to say, It is extremely slow in most of the cases.
So slow that i'm doubting to abandon this ship and search for another chatbot-api.

Basically what i'm doing is:

I load in the packages:

import dialogflow_v2
from google.oauth2 import service_account

I create my credentials from my service account json file

cred_loc = 'first-planet-****************.json'
cred = service_account.Credentials.from_service_account_file(cred_loc)

I create the, agents_client, intents_client, entity_types_client

agents_client = dialogflow_v2.AgentsClient(credentials = cred)
agents_parent = agents_client.project_path(cred._project_id)

intents_client = dialogflow_v2.IntentsClient(credentials = cred)
intents_parent = intents_client.project_agent_path(cred.project_id)

entity_types_client = dialogflow_v2.EntityTypesClient(credentials = cred)
entity_types_parent = entity_types_client.project_agent_path(cred.project_id)

And then the misery starts:

Search agents takes 24 seconds

agents = []
for s in agents_client.search_agents(agents_parent).pages:
    try:
        agents.append(s.next())
    except:
        pass

List intents takes 36 seconds

intents_name_to_id = {}
for element in intents_client.list_intents(intents_parent, intent_view='INTENT_VIEW_FULL'):
    intents_name_to_id[element.display_name] = element.name

List entity types takes 33 seconds

entity_name_to_id = {}
for element in entity_types_client.list_entity_types(entity_types_parent):
    entity_name_to_id[element.display_name] = element.name

And it is not that it is a large project, in contrary, it is a new project with 1 agent, 2 intents and 2 entity types...

Thus my question is:

  1. is this a bug?
  2. is it because i'm using the non enterprise (free) license?
  3. is it because of the way how i setup my connection? (service account file?)

For me, it seems to be that I can't do that much wrong...

Also, when i do the same thing via the cloud...dialogflow.docs website:

https://cloud.google.com/dialogflow/docs/reference/rest/v2/projects.agent.intents/list?apix_params=%7B%22parent%22%3A%22projects%2Ffirst-planet-268313%2Fagent%22%7D

then it works, very well ... (I get a response back within 1-2 seconds)

Kind regards


EDIT/EXTRA:
When i do the same thing without the dialogflow_v2, then it is equally slow ...

from google.oauth2 import service_account
import google.auth.transport.requests

cred_loc = 'first-planet-****.json'
SCOPES = ['https://www.googleapis.com/auth/dialogflow']
cred = service_account.Credentials.from_service_account_file(cred_loc,scopes=SCOPES)


cred.refresh(google.auth.transport.requests.Request())
parent = f'projects/{cred.project_id}'
header = {'Authorization': 'Bearer ' + cred.token}
search = requests.get(f'https://content-dialogflow.googleapis.com/v2/{parent}/agent:search', headers=header)
json.loads(search.content)

thus, the common factor of dialogflow_v2 and via request is the service account file (both method are slow) while the cloud...dialogflow.docs website uses oauth2 method ...

  • If this issue sounds familiar to you, then you might have a network issue. Try to connect to another Wi-Fi-network or a Mobile hotspot. And then it should be solved ... .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM