33 lines
858 B
Python
33 lines
858 B
Python
import os
|
|
|
|
from modal import App, Image, asgi_app
|
|
|
|
# Define the FastAPI app
|
|
app = App("arcade-worker")
|
|
|
|
toolkits = ["arcade_google", "arcade_slack"]
|
|
|
|
image = Image.debian_slim().pip_install("arcade-ai").pip_install(toolkits)
|
|
|
|
|
|
@app.function(image=image)
|
|
@asgi_app()
|
|
def fastapi_app():
|
|
from fastapi import FastAPI
|
|
|
|
from arcade.sdk import Toolkit
|
|
from arcade.worker.fastapi.worker import FastAPIWorker
|
|
|
|
web_app = FastAPI()
|
|
|
|
# Initialize app and Arcade FastAPIWorker
|
|
worker_secret = os.environ.get("ARCADE_WORKER_SECRET", "dev")
|
|
worker = FastAPIWorker(web_app, secret=worker_secret)
|
|
|
|
# Register toolkits we've installed
|
|
installed_toolkits = Toolkit.find_all_arcade_toolkits()
|
|
for toolkit in installed_toolkits:
|
|
if toolkit.package_name in toolkits:
|
|
worker.register_toolkit(toolkit)
|
|
|
|
return web_app
|