Here's how we can formulate this problem and the corresponding Gurobi code:

**Decision Variables:**

*  `x`: Number of fruit gummy bear packets
*  `y`: Number of sour gummy bear packets

**Objective Function:**

Maximize profit: `1x + 1.25y`

**Constraints:**

* **Time Constraint:** `10x + 15y <= 2000` (Total production time cannot exceed 2000 minutes)
* **Fruit Gummy Production Limit:** `x <= 120`
* **Sour Gummy Production Limit:** `y <= 70`
* **Non-negativity:** `x >= 0`, `y >= 0`


```python
import gurobipy as gp
from gurobipy import GRB

# Create a new model
model = gp.Model("GummyBearProduction")

# Create decision variables
x = model.addVar(vtype=GRB.INTEGER, name="fruit_gummy")  # Fruit gummy packets
y = model.addVar(vtype=GRB.INTEGER, name="sour_gummy")  # Sour gummy packets

# Set objective function
model.setObjective(1*x + 1.25*y, GRB.MAXIMIZE)

# Add constraints
model.addConstr(10*x + 15*y <= 2000, "time_constraint")
model.addConstr(x <= 120, "fruit_limit")
model.addConstr(y <= 70, "sour_limit")

# Optimize model
model.optimize()

# Print results
if model.status == GRB.OPTIMAL:
    print(f"Optimal Solution Found:")
    print(f"Produce {x.x} packets of fruit gummy bears")
    print(f"Produce {y.x} packets of sour gummy bears")
    print(f"Maximum Profit: ${model.objVal}")
elif model.status == GRB.INFEASIBLE:
    print("Model is infeasible. No solution exists.")
else:
    print(f"Optimization terminated with status {model.status}")

```
