Surface preparation really is the deciding factor. Also it helps to aggressively dehumidify the paint working area, so you don't trap moisture under the primer, which will simply "go to town" and cause the paint to bubble off.
It also helps if you prime and paint the entire piece, and not ignore "backsides" where it is hard to access or where it has been bolted to the house.
OK, so if you're painting, you start with prep. There are various levels of it, from "no prep" clear up to SSPC-PC10 "sand blast to near white metal".
Least: Power wire brush - alkyd primer - alkyd enamel
As a practical "git-r-dun" matter, I just reach for my wire wheel, and go over the surface to where all removable surface rust is gone. You now have an orange-brown-tinted bare metal. I then immediately coat that with a "rusty metal" alkyd primer such as Rustoleum 7769, typically "red lead" color but certainly not lead. Two coats of that, mainly to assure there are no "holidays" (missed parts) but thickness helps too.
Then, if I am painting a light color, solely to reduce the number of topcoats required, I follow with a similar white metal primer (the primer being white). I find it is nowhere near as good at stopping rust; indeed Rustoleum 7780 is labeled as a "clean metal primer".
I would then follow with either a) an alkyd topcoat for ordinary wearing surfaces, or b) for tough surfaces a 2-part epoxy primer and marine LPU as described below.
Now, the alkyd topcoat will need maintenance, but as long as you do maintain it before it wears into primer layers, it'll just need the occasional topcoat. Could you use low-toxicity "latex" emulsion paints for this? Sure, but they're softer so they'll need more frequent maintenance.
Second Best: galvanizing.
Perfect world, you send the whole assembly out for hot-dip galvanizing, and part of that process is "pickling" or using electrolysis and aggressive acids to strip off all oxidation. Then, they dip it in a tank of molten zinc. That ages to a silver-gray surface, but is not particularly wear-friendly.
Can you paint over galvanizing? Yes, but the paint won't stick to fresh galvanizing. You need to give it a year (several years, indoors) for the patina to develop (the outer layer to oxidize) so the paint has anything to grab onto.
Best: Media blast - zinc chromate primer - epoxy primer - LPU
If you really need it to last in tough environments, and it will have high surface wear, then you need to pull out all the stops.
NASA has done a lot of research on this, being located at Cape Canaveral ("who picked this location? Stalin?") and they have an entire website on their research. http://corrosion.ksc.nasa.gov
It starts with media blast to near white metal, SSPC-PC10. NASA has found nothing less will do - any other preparation method results in a serious durability loss regardless of paint method.
Follow that with (NASA says) one of the zinc chromate primers - the ones you see on new airplane hulls or unfinished locomotives, that look like a flat green.
Follow that with a "barrier coat" of 2-part epoxy primer which is compatible with the LPU topcoat. The LPU can't bond to zinc chromate directly. So it's just there to be an "adaptor block" as it were.
Finally coat(s) of 2-part Linear Polyurethane (LPU) topcoat.
These products are available at a competent marine supply, and the advantage of marine versions are many are formulated to be brush-applied. The solvents smell most foul... however the really toxic elements are in the paint resin, and will chemically react to become completely harmless as the paint cures. If you brush it, the resin stays on the paint brush/roller... just wear gloves and long sleeve clothing, and try not to get it on your skin. (not the end of the world; skin is a relatively good barrier but still remove it immediately).
However, if you spray it, now the resin is atomized in the air, and lungs are a very poor barrier. You must wear a moon suit with externally supplied air, must have exit filtration or a wide cordon to keep innocents away, etc. So, don't spray it lol. At least, all the overspray will fall to the ground as fine powder, and will still cure - after the curing period has run, it too is harmless. (of course it's also micro-plastics, which isn't great for the environment). Also you had to use a lot more paint. Not a fan of spraying it.
Once the paint has cured (3-5 days for primers, 15-30 days for topcoats) the toxic BPA or isocyanates have been chemically neutralized. Heck, BPA-based epoxies are even used on the inside of drinking water tanks and food cans, and there's no remaining trace of BPA unless the mixing of the epoxy was botched.