相关疑难解决方法(0)

如何强制Django忽略任何缓存并重新加载数据?

我正在使用来自未通过HTTP请求调用的进程的Django数据库模型.该过程应该每隔几秒轮询一次新数据并对其进行一些处理.我有一个循环,睡眠几秒钟,然后从数据库中获取所有未处理的数据.

我所看到的是,在第一次获取后,进程永远不会看到任何新数据.我运行了一些测试,看起来Django正在缓存结果,即使我每次都在构建新的QuerySet.为了验证这一点,我从Python shell中做到了这一点:

>>> MyModel.objects.count()
885
# (Here I added some more data from another process.)
>>> MyModel.objects.count()
885
>>> MyModel.objects.update()
0
>>> MyModel.objects.count()
1025
Run Code Online (Sandbox Code Playgroud)

如您所见,添加新数据不会更改结果计数.但是,调用管理器的update()方法似乎可以解决问题.

我找不到有关该update()方法的任何文档,也不知道它可能做的其他坏事.

我的问题是,为什么我看到这种缓存行为,这与Django文档所说的相矛盾?我该如何防止它发生?

python django caching

74
推荐指数
5
解决办法
4万
查看次数

在 Celery 任务中保存对象后,Django 匹配查询不存在

我有以下代码:

@task()
def handle_upload(title, temp_file, user_id):
    .
    .
    .
    photo.save()
    #if i insert here "photo2 = Photo.objects.get(pk=photo.pk)" it works, including the         view function
    return photo.pk

#view function
def upload_status(request):
    task_id = request.POST['task_id']

    async_result = AsyncResult(task_id)
    photo_id = async_result.get()
    if async_result.successful(): 
        photo = Photo.objects.get(pk=photo_id)
Run Code Online (Sandbox Code Playgroud)

我使用 ajax 请求来检查上传的文件,但在 celery 任务完成后,我得到一个照片匹配查询不存在。照片 pk 确实存在并被退回。如果我手动查询数据库,它就可以工作。这是某种数据库延迟吗?我该如何解决?我正在使用 Django 1.4 和 Celery 3.0

python mysql django celery django-celery

6
推荐指数
1
解决办法
3736
查看次数

标签 统计

django ×2

python ×2

caching ×1

celery ×1

django-celery ×1

mysql ×1