Dear Web2py friends,

I am trying to cosume a graphql endpoint using 
https://github.com/graphql-python/gql#HTTP-async-transport but get an error.

Applied code:

def qlquery():
    from gql import gql, Client, AIOHTTPTransport

    # Select your transport with a defined url endpoint
    transport = AIOHTTPTransport(url="https://countries.trevorblades.com/";)

    # Create a GraphQL client using the defined transport
    client = Client(transport=transport, fetch_schema_from_transport=True)

    # Provide a GraphQL query
    query = gql(
        """
        query getContinents {
        continents {
            code
            name
            }
        }
    """
    )

    # Execute the query on the transport
    result = client.execute(query)
    print(result)

    return locals()


Gives:

class 'RuntimeError'> There is no current event loop in thread 'Thread-13'. 
Versie 
web2py™ Version 2.20.4-stable+timestamp.2020.05.03.05.18.50 
Python Python 3.8.2: C:\Program Files\Python38\python.exe (prefix: 
C:\Program Files\Python38) Traceback 

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.

Traceback (most recent call last):
  File "E:\web2py_src\web2py\gluon\restricted.py", line 219, in restricted
    exec(ccode, environment)
  File "E:/web2py_src/web2py/applications/insp/controllers/qlquery.py" 
<http://127.0.0.1:8000/admin/default/edit/insp/controllers/qlquery.py>, line 
27, in <module>
  File "E:\web2py_src\web2py\gluon\globals.py", line 430, in <lambda>
    self._caller = lambda f: f()
  File "E:/web2py_src/web2py/applications/insp/controllers/qlquery.py" 
<http://127.0.0.1:8000/admin/default/edit/insp/controllers/qlquery.py>, line 
23, in qlquery
    result = client.execute(query)
  File 
"C:\Users\richa\AppData\Roaming\Python\Python38\site-packages\gql\client.py", 
line 113, in execute
    loop = asyncio.get_event_loop()
  File "C:\Program Files\Python38\lib\asyncio\events.py", line 639, in 
get_event_loop
    raise RuntimeError('There is no current event loop in thread %r.'
RuntimeError: There is no current event loop in thread 'Thread-13'.


This looks like a asyncio issue as mentioned in 
https://github.com/graphql-python/gql#HTTP-async-transport
Here they suggest to use :

from gql import gql, AIOHTTPTransport, Clientimport asyncio
async def main():

    transport = 
AIOHTTPTransport(url='https://countries.trevorblades.com/graphql')

    # Using `async with` on the client will start a connection on the transport
    # and provide a `session` variable to execute queries on this connection
    async with Client(
        transport=transport,
        fetch_schema_from_transport=True,
        ) as session:

        # Execute single query
        query = gql('''            query getContinents {              
continents {                code                name              }            
}        ''')

        result = await session.execute(query)
        print(result)
asyncio.run(main())

But this 'hangs'

Does anybody has some experience with this?

Kind regards,
Richard


-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/web2py/df8910e5-3eaa-48be-b95e-9d3a67195888o%40googlegroups.com.

Reply via email to