首页 > 解决方案 > 带有 Postgresql 的 Django:在本地机器上创建的重复对象和远程服务器上的三重对象

问题描述

我在 DigitalOcean 上有一个带有 Postgresql 的 Django 项目。奇怪的是,当我创建一个对象时,它在远程服务器上被复制了三次,并在本地机器上被复制了。

这是我的模型。

from django.db import models

class Instrument(models.Model):
    id = models.CharField(max_length=4, primary_key=True)

    def __str__(self):
        return self.id

class Quote(models.Model):
    instrument = models.ForeignKey(Instrument, on_delete=models.CASCADE, 
    related_name='quotes')
    quote = models.FloatField()
    timestamp = models.DateTimeField(auto_now_add=True)


    def __str__(self):
        return self.instrument.id;

这就是我创建对象的方式:

q = Quote(instrument=Instrument.objects.get(pk='GBP'), quote=1.2100)
q.save()

我尝试以不同的方式创建对象:

i = Instrument.objects.get(pk='EUR')
q = Quote.objects.create(instrument=i, quote=1.2000)

我将不胜感激任何意见和想法如何解决它。

我使用 Apscheduler 检索数据并将其存储在 DB 中,每次执行时我在 DB 中有 3 条记录:

    {
        "instrument": "iEUR",
        "quote": 2.19572761275879,
        "timestamp": "2019-08-26T23:09:00.540737Z"
    },
    {
        "instrument": "iEUR",
        "quote": 2.19572761275879,
        "timestamp": "2019-08-26T23:09:00.563785Z"
    },
    {
        "instrument": "iEUR",
        "quote": 2.19572761275879,
        "timestamp": "2019-08-26T23:09:00.565883Z"
    }

标签: djangopostgresql

解决方案


事实证明,由于 3 个工作人员启动的 Apscheduler 任务而创建了重复项。这是一个类似的问题

我已经改用 Celery 而不是 Aspscheduler。


推荐阅读