Is it possible to separate tasks in different scri...
# ask-community
c
Is it possible to separate tasks in different scripts from the flows that call them in Prefect 2.0? I'm getting this error currently. @task(name='Get Email Credentials', NameError: name 'task' is not defined
Copy code
@task(name='Get Email Credentials',
      retries = 2,
      retry_delay_seconds = 10)
async def GetEmailCredentials(aws_credentials: AwsCredentials) -> EmailCredentials:
    session = aws_credentials.get_boto3_session()
    secrets_client = session.client(service_name='secretsmanager')
    aws_secret = secrets_client.get_secret_value(SecretId='DEV_EMAIL')
    secret_json = aws_secret['SecretString']
    emailDict = json.loads(secret_json)
    return EmailCredentials(emailDict)
1
^^ Attempting to implement similar code for different clients and I want to separate the tasks and flows to use the DRY principle.
n
yes, this is possible do you have
from prefect import task
in the file where you're defining
GetEmailCredentials
?
c
Yes
Copy code
import prefect
import json
from prefect_aws import AwsCredentials
from prefect import tasks

@task(name='Get Email Credentials',
      retries = 2,
      retry_delay_seconds = 10)
async def GetEmailCredentials(aws_credentials: AwsCredentials) -> EmailCredentials:
    session = aws_credentials.get_boto3_session()
    secrets_client = session.client(service_name='secretsmanager')
    aws_secret = secrets_client.get_secret_value(SecretId='DEV_EMAIL')
    secret_json = aws_secret['SecretString']
    emailDict = json.loads(secret_json)
    return EmailCredentials(emailDict)
n
I think we've got an extra "s" on
task
😄
Copy code
from prefect import tasks
c
🤦‍♂️
n
earlier today I accidentally swapped my aws key id and secret key in my
~/.aws/credentials
profile and for like a half hour I was like "what is going on?!?!" haha it happens
😀 2
c
Thanks again, Nate. Looks like I'm able to hydrate that EmailCredentials class now
🎉 1
n
glad to have helped!