I seem to be having an issue when registering a fl...
# ask-community
w
I seem to be having an issue when registering a flow with the cloud. It fails here:
Copy code
File "/usr/local/lib/python3.9/site-packages/marshmallow/fields.py", line 1410, in _serialize
    return int(value.total_seconds() / base_unit.total_seconds())
AttributeError: 'int' object has no attribute 'total_seconds'
In the comments I have the full stack trace
Copy code
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/local/lib/python3.9/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/drone/src/MY_REPO/prefect/scripts/register.py", line 149, in <module>
    register()
  File "/usr/local/lib/python3.9/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.9/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/drone/src/MY_REPO/prefect/scripts/register.py", line 145, in register
    _register_flow(key, log_level, environment, image_tag)
  File "/drone/src/MY_REPO/prefect/scripts/register.py", line 123, in _register_flow
    flow.register(project_name, labels=[environment])
  File "/usr/local/lib/python3.9/site-packages/prefect/core/flow.py", line 1727, in register
    registered_flow = client.register(
  File "/usr/local/lib/python3.9/site-packages/prefect/client/client.py", line 1131, in register
    serialized_flow = flow.serialize(build=build)  # type: Any
  File "/usr/local/lib/python3.9/site-packages/prefect/core/flow.py", line 1483, in serialize
    serialized = schema(exclude=["storage"]).dump(flow_copy)
  File "/usr/local/lib/python3.9/site-packages/marshmallow/schema.py", line 553, in dump
    result = self._serialize(processed_obj, many=many)
  File "/usr/local/lib/python3.9/site-packages/marshmallow/schema.py", line 517, in _serialize
    value = field_obj.serialize(attr_name, obj, accessor=self.get_attribute)
  File "/usr/local/lib/python3.9/site-packages/marshmallow/fields.py", line 325, in serialize
    return self._serialize(value, attr, obj, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/prefect/utilities/serialization.py", line 231, in _serialize
    return super()._serialize(value, attr, obj, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/marshmallow/fields.py", line 580, in _serialize
    return schema.dump(nested_obj, many=self.many or many)
  File "/usr/local/lib/python3.9/site-packages/marshmallow/schema.py", line 553, in dump
    result = self._serialize(processed_obj, many=many)
  File "/usr/local/lib/python3.9/site-packages/marshmallow/schema.py", line 511, in _serialize
    return [
  File "/usr/local/lib/python3.9/site-packages/marshmallow/schema.py", line 512, in <listcomp>
    self._serialize(d, many=False)
  File "/usr/local/lib/python3.9/site-packages/marshmallow/schema.py", line 517, in _serialize
    value = field_obj.serialize(attr_name, obj, accessor=self.get_attribute)
  File "/usr/local/lib/python3.9/site-packages/marshmallow/fields.py", line 325, in serialize
    return self._serialize(value, attr, obj, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/marshmallow/fields.py", line 1410, in _serialize
    return int(value.total_seconds() / base_unit.total_seconds())
AttributeError: 'int' object has no attribute 'total_seconds'
k
What is your marshmallow version?
w
I've tried 3.11, 3.13, and 3.3
Tried prefect 0.15.1 and 0.15.5
k
ok will try in a bit
w
Thank you!
Also, what's odd, it seems to fail for 1 flow, but an identical flow succeeds right before it
(almost identical)
k
2 flows from 1 script or separate scripts?
w
1 script, they are identical but have different flow_names and and different databases in config
They're generated by a method that returns a Flow object.
k
i was able to register on python 3.9.7, prefect 0.15.5, marshmallow 3.13
wild guess but this might be the schedule? what does your schedule look like?
w
Neither flow is scheduled, they are called by another flow
So they are called in that orchestration flow via this command:
Copy code
my_flow_name = StartFlowRun(
    flow_name="my-flow-name",
    project_name="project_name",
    max_retries=3,
    retry_delay=20,
    wait=True,
)
k
I think the
retry_delay
has to be a timedelta
w
Oh my, I'll try that
That was it, thanks for the quick help. I appreciate it!
👍 1
k
No problem!