Ravish Mallya
10/06/2025, 8:42 AMMarvin
10/06/2025, 8:42 AMMarvin
10/06/2025, 8:46 AMschedule:
interval: 'None'
retries: 'None'
retry_delay_seconds: 'None'
Change to:
# remove schedule entirely if you don't want one
# or set a real interval in seconds
schedule:
interval: 3600
# if you don’t want retries, remove the fields or set explicit ints
retries: 0
retry_delay_seconds: 0
A minimal working process-pool deployment example:
name: my-project
prefect-version: "3.*"
deployments:
- name: dep-name
entrypoint: flows/my_flow.py:my_flow
work_pool:
name: process-pool
# optional
parameters: {}
# optional schedule example
# schedule:
# cron: "0 * * * *"
# timezone: "UTC"
A couple of questions to help pinpoint it:
- What’s your Prefect version (prefect version)?
- Can you share the relevant parts of your prefect_local.yaml (especially the deployments block and any schedule/retries fields)?
- Is the exact error text showing fancy quotes around None (like ‘None’)?
Docs for reference: prefect.yaml configuration in Prefect 3
Once you paste the snippet, I can call out the exact field causing the issue.Ravish Mallya
10/06/2025, 8:50 AM- name: my-service
tags: [my-service]
description: Run my service locally with Docker
flow_name: my_service_flow
entrypoint: app/flows/service_flow.py:my_service_flow
work_pool:
name: my-process-poolMarvin
10/06/2025, 8:51 AMMarvin
10/06/2025, 8:52 AMtags and flow_name are not valid deployment keys in Prefect 3.x prefect.yaml. The flow name is inferred from your entrypoint. Remove both of these keys.
- Valid keys include name, entrypoint, description, parameters, schedule, and work_pool (plus work_pool.job_variables for per-run settings).
- Docs: prefect.yaml in Prefect 3
2) The actual error: “‘None’” being parsed as an int
- Your error shows curly quotes around None: ‘None’. That means somewhere in your YAML a value is literally the string ‘None’ (with smart quotes) for a field that expects an integer.
- Common places this happens: retries, retry_delay_seconds, concurrency, or a schedule.interval.
- Fix by removing those fields if you don’t use them, or set proper numbers, and ensure there are no smart quotes. Use null (or omit the field) instead of "None".
Here’s a minimal, valid deployment block for a process pool you can drop into `prefect_local.yaml`:
name: my-project
prefect-version: "3.*"
deployments:
- name: my-service
description: Run my service locally with Process
entrypoint: app/flows/service_flow.py:my_service_flow
work_pool:
name: my-process-pool
# optional job variables for process workers
# job_variables:
# stream_output: true
# working_dir: .
# env:
# MY_ENV: "value"
If you intended to “tag” runs: deployment-level tags are not supported in 3.x. If you need labels on the worker job, you can use job_variables.labels (note: those are key/value labels for the worker, not run tags).
Could you share:
- Your full prefect_local.yaml (including the top-level `name`/`prefect-version` and any `schedule`/`retries` fields)?
- Your Prefect version (prefect version)?
With that I can point to the exact field that’s causing the int() on ‘None’.Ravish Mallya
10/06/2025, 8:54 AMMarvin
10/06/2025, 8:55 AMMarvin
10/06/2025, 8:58 AMPREFECT_LOGGING_ROOT_LEVEL=DEBUG prefect deploy --prefect-file prefect_local.yaml --name dep-name
Persist for your profile
prefect config set PREFECT_LOGGING_ROOT_LEVEL=DEBUG
# verify
prefect config view | grep PREFECT_LOGGING_ROOT_LEVEL
Optional: enable debug mode (if your Prefect version supports it)
prefect config set PREFECT_DEBUG_MODE=true
prefect config view | grep PREFECT_DEBUG_MODE
Then rerun your deploy command.
If you still don’t see a full traceback, paste the DEBUG output here and I’ll help trace it to the exact field.
Docs:
- Logging customization
- Settings reference