import os import modal from gql import gql, Client from gql.transport.aiohttp import AIOHTTPTransport transport = AIOHTTPTransport( url="https://studio-api.suno.ai/graphql/", headers={"Authorization": "Bearer 8cd22e877fe04ce294a5a69e6f8885e6"}, ) aws_secret = modal.Secret.from_name("studio-aws") STUB_NAME = "smoke_test" image = modal.Image.debian_slim(python_version="3.10").pip_install("gql").pip_install("pagerduty-api") stub = modal.Stub(STUB_NAME, image=image) @stub.function( schedule=modal.Period(minutes=30), secret=modal.Secret.from_name("pager-duty-secret"), ) async def check_hang_percent(): import pagerduty_api service_key = os.environ["SERVICE_KEY"] alert = pagerduty_api.Alert(service_key=service_key) client = Client(transport=transport, fetch_schema_from_transport=False) query = gql( """ { generationHangPercent } """ ) result = await client.execute_async(query) percent = result["generationHangPercent"] if percent > 0.5: print("BOT HANGING! Percent of hung generations: ", percent) alert.trigger( description="Bot is Hanging", ) print(result["generationHangPercent"]) @stub.local_entrypoint() async def main(): check_hang_percent.call()