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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/web2py/df8910e5-3eaa-48be-b95e-9d3a67195888o%40googlegroups.com.