BUG: inconsistent `at` setter method

#### Problem description

I am seeing some very strange behaviour. I have a python function which does simple manipulation of data in a DataFrame.

this code is very simple - unit tests work in the relevant package - however the behaviour is very different in server environment - where function is called via rest api.

It turns out that the difference is due to the fact that in the server environment the behaviour of the dataframe 'at' setter method, (ie: myframe.at[rowidx,colkey] = value) is different to that in the package test environment.

in the package test environment the effect of this method is to change the value of the appropriate element of the dataframe - but in the server environment it appears to insert a value after the referenced element. The dataframe changes size - even through the referenced element is within the defined bounds of the data.

as far as I can tell the versions of the relevant libraries packages are exactly the same in both cases - I might be wrong - if I dig into the pandas code - it seems to me to be unnecessarily convoluted, but as far as i can tell the problem happens with frame._set_value in the except clause.

I am a very experienced developer - but not with Python. I have written components similar to DataFrame in C++ in the distant past.

this kind of problem shakes my confidence in deploying anything which might exhibit this kind of behaviour - which causes serious and unpredictable errors downstream rather than an outright runtime error, or maybe I am just using it incorrectly. 

I have dug into this quite a bit - and I am unclear how to further diagnose what is going on.

#### Output of ``pd.show_versions()``

<details>

Version          : 10.0.19041
machine          : AMD64
processor        : Intel64 Family 6 Model 94 Stepping 3, GenuineIntel
byteorder        : little
LC_ALL           : None
LANG             : en_GB.UTF-8
LOCALE           : English_United Kingdom.1252

pandas           : 1.2.1
numpy            : 1.19.5
pytz             : 2020.5
dateutil         : 2.8.1
pip              : 21.0
setuptools       : 49.2.1
Cython           : None
pytest           : None
hypothesis       : None
sphinx           : None
blosc            : None
feather          : None
xlsxwriter       : None
lxml.etree       : None
html5lib         : None
pymysql          : None
psycopg2         : None
jinja2           : None
IPython          : None
pandas_datareader: None
bs4              : None
bottleneck       : None
fsspec           : None
fastparquet      : None
gcsfs            : None
matplotlib       : 3.3.3
numexpr          : None
odfpy            : None
openpyxl         : None
pandas_gbq       : None
pyarrow          : None
pyxlsb           : None
s3fs             : None
scipy            : 1.6.0
sqlalchemy       : None
tables           : None
tabulate         : None
xarray           : None
xlrd             : None
xlwt             : None
numba            : None

</details>
