小编M.j*_*vid的帖子

Celery不能与RabbitMQ一起使用"--autoreload"选项

  1. 我不知道是bug还是配置问题.
  2. 目标:调试/修改Celery任务,而无需在每次进行小的更改时手动重新启动工作程序

所以我配置了Celery + RabbitMQ.一切正常.

添加--autoreloadcelery -A proj worker --loglevel=debug命令选项,并在此处停止记录:

[2014-09-11 19:22:00,447: DEBUG/MainProcess] | Worker: Hub.register Autoreloader...
Run Code Online (Sandbox Code Playgroud)

没有它:

[2014-09-11 19:37:34,316: DEBUG/MainProcess] | Worker: Hub.register Pool...
[2014-09-11 19:37:34,317: DEBUG/MainProcess] basic.qos: prefetch_count->16
[2014-09-11 19:37:36,275: DEBUG/MainProcess] pidbox received method enable_events() [reply_to:None ticket:None]
[2014-09-11 19:37:36,275: INFO/MainProcess] Events of group {task} enabled by remote.
Run Code Online (Sandbox Code Playgroud)

其他一切都很好.RabbitMQ之后收到一条消息

celery call tasks.update
Run Code Online (Sandbox Code Playgroud)

Celery酒店提供连接.它只是没有告诉Celery开始任务.

它看起来像一个连接问题,但我不知道它是什么.
如果你可以提供帮助,请写信.

python django rabbitmq celery django-celery

5
推荐指数
1
解决办法
439
查看次数

Linux。Heroku-Django。收集静态只读文件系统

我需要了解 linux 的人的帮助。我无法将我的静态文件推送到 Heroku(我正在尝试使用白噪声而不是 Amazon S3 或任何 CDN)。错误很简单,当我尝试推送到 heroku 时,我得到:

 Preparing static assets
       Running collectstatic...
       Traceback (most recent call last):
       OSError: [Errno 30] Read-only file system: '/assets'
Run Code Online (Sandbox Code Playgroud)

所以,我不能运行 collectstatic 因为我没有权限。如果我这样做,sudo git push heroku master我会收到另一个错误:Permission denied (publickey)我猜这是因为“sudo”使用了不同的 SSH 密钥。

我尝试从文件管理器更改文件夹的权限,我也尝试从 bash:

sudo chmod 777 -R static
Run Code Online (Sandbox Code Playgroud)

static 是父文件夹:static/assets。

那么......我该如何解决这个问题?任何帮助将不胜感激。

python linux django heroku chmod

5
推荐指数
1
解决办法
2245
查看次数

Django CBV - 如何避免为每个视图重复 get_context_data 只是为了获得自定义标题?

我正在{{ title }}为我的项目的每一页设置一个。有时这title是一个静态字符串,例如Enter your Name,有时它基于该页面上的相关对象,例如Employee.first_name.

为了创建context['title'],我get_context_data在每个基于类的视图中使用。但这似乎导致我每次都重复一段代码,我希望以某种方式减少它。

例如,要为每个页面编写自定义标题,我必须这样写:

def get_context_data(self, **kwargs):
    context = super(SomeView, self).get_context_data(**kwargs)
    context['title'] = 'Title for This page'
    return context
Run Code Online (Sandbox Code Playgroud)

我觉得有一个混入是理想的,我以某种方式只是传入变量title,我的context字典将context['title']根据传入的变量自动添加。

这可能吗?有没有一种方法来创建一个mixin使得所有我需要做的就是传递一个变量,它会给我一个上下文只是为标题,而不是写出来的代码块的每一个观点?

python django django-class-based-views

5
推荐指数
2
解决办法
636
查看次数

带有芹菜的 Django - 找不到现有对象

我在从另一个 celery 任务执行 celery 任务时遇到问题。

这是有问题的片段(数据对象已经存在于数据库中,它的属性只是在 finalize_data 函数中更新):

def finalize_data(data):
    data = update_statistics(data)
    data.save()
    from apps.datas.tasks import optimize_data
    optimize_data.delay(data.pk)

@shared_task
def optimize_data(data_pk):
    data = Data.objects.get(pk=data_pk)
    #Do something with data
Run Code Online (Sandbox Code Playgroud)

调用 optimize_data 函数失败,并显示“数据匹配查询不存在”。

如果我在 finalize_data 函数中调用 pk 函数检索它工作正常。如果我将 celery 任务调用延迟一段时间,它也可以正常工作。

这一行:

optimize_data.apply_async((data.pk,), countdown=10)
Run Code Online (Sandbox Code Playgroud)

代替

optimize_data.delay(data.pk)
Run Code Online (Sandbox Code Playgroud)

工作正常。但我不想在我的代码中使用 hacks。.save() 调用是否有可能异步阻止对该行/对象的访问?

python django asynchronous celery

5
推荐指数
2
解决办法
1886
查看次数

在 Django 中禁用会话

我的网站提供几乎静态的页面,并且没有用户登录等。

出于性能原因,我想完全禁用会话(因此 django 不会访问数据库以获取每个请求的会话)。

django.contrib.sessions从 INSTALLED_APPS 中删除了,还有什么我需要做的吗?

python django django-sessions

5
推荐指数
1
解决办法
4012
查看次数

Django Rest Framework给出“日期时间格式错误”

我有一个模型和一个使用 DRF 的序列化程序。使用下面的代码,当通过 ajax 提交所有字段为空的表单时,我收到错误消息description“此字段不能为空”,这正是我想要的。但是对于日期时间字段,我得到“日期时间格式错误”。为什么日期时间字段也不给我“此字段不能为空”?它在评估它是否有值之前进行格式验证。根据文档,Required默认情况下应为 true,并且模型也需要它。

我怎样才能让它简单地说“这个字段不能为空”或类似的东西?现在我正在通过在调用序列化程序的视图中进行验证来解决它。

class RoomEventSerializer(serializers.ModelSerializer):
    start_datetime = serializers.DateTimeField(input_formats=(['%m/%d/%Y %I:%M %p', 'iso-8601']))
    end_datetime = serializers.DateTimeField(input_formats=(['%m/%d/%Y %I:%M %p', 'iso-8601']))

    class Meta:
        model = RoomEvent
        fields = ('start_datetime', 'end_datetime', 'description', 'room', 'start_hour', 'start_min', 'start_ampm', 'end_hour', 'end_min', 'end_ampm', 'requesting_user', 'type', 'approval_status')

    def validate(self, data):
        if data['start_datetime'] >= data['end_datetime']:
            raise serializers.ValidationError('Start date must be prior to end date.')
        return data

class RoomEvent(models.Model):
    description = models.CharField(max_length=250)
    start_datetime = models.DateTimeField()
    end_datetime = models.DateTimeField()
Run Code Online (Sandbox Code Playgroud)

python django django-rest-framework

5
推荐指数
1
解决办法
5428
查看次数

python json dict iterate {key:value}是一样的

我有一个我正在阅读的json文件; 看起来类似于:

[
  {
    "Destination_IP": "8.8.4.4",
    "ID": 0,
    "Packet": 105277
  },
  {
    "Destination_IP": "9.9.4.4",
    "ID": 0,
    "Packet": 105278
  }
]
Run Code Online (Sandbox Code Playgroud)

当我解析json时:

for json_dict in data:
    for key,value in json_dict.iteritems():
        print("key: {0} | value: {0}".format(key, value))
Run Code Online (Sandbox Code Playgroud)

我正进入(状态:

key: Destination_IP | value: Destination_IP
Run Code Online (Sandbox Code Playgroud)

我已经尝试使用.items(),我已经尝试过通过遍历键iterkeys()keys()无济于事.

我可以直接调用它json_dict['Destination_IP']并返回值.

for json_dict in data:
    if 'Destination_IP' in json_dict.keys():
        print json_dict['Destination_IP']
Run Code Online (Sandbox Code Playgroud)

收益:

key: Destination_IP | value: 8.8.4.4
Run Code Online (Sandbox Code Playgroud)

我在python 2.7上,所以在运行值部分的任何帮助都将非常感激.

python json dictionary

4
推荐指数
1
解决办法
2万
查看次数

在Django模板中获取家庭URL(域)的当前方法?

这很简单,但似乎没有提供。

基本上,如果我的网站是...

或非root用户安装

...我想django会知道这一点,并在模板中有一个常量。

我发现的解决方案涉及:

  1. 使用以下命令在settings.py中进行设置 SITE_URL =
  2. 在视图中参考settings.py。
  3. 最后使用{{ SITE_URL }}或其他方式在模板中访问它。

不是很

听起来不错,但是django不提供{{ GET_ME_THE_ROOT_URL }}参考吗?

抱歉,django已经训练我期待这样的好吃的东西。

只是说'如果我正在写一个框架,那是我要做的第一件事,除了在我的桌子旁边放一个小冰箱,里面装满了热钱包,还有一个微波炉,但距离很近但很安全。

python django django-templates django-settings

4
推荐指数
1
解决办法
3625
查看次数

Django CreateView form_valid方法中的访问请求变量

如何在form_valid中访问请求?

def redirect_logic_func(request):
   #redirect logic

class CView(CreateView):
    form_class = CForm
    template_name = "c_form.html"

    def form_valid(self, form):
        form.save()
        super(CView, self).form_valid(form)
        return redirect_logic_func(self.request)
Run Code Online (Sandbox Code Playgroud)

self.request.POST和request.POST一样吗?

python django django-views django-class-based-views

4
推荐指数
1
解决办法
3484
查看次数

Django REST:通过 UUID 查找序列化程序

我正在 Django REST 中创建这个简单的购物 API。

在内部,我将 ID 用于外键约束,而guuids被带到外部世界。

对于结帐过程,用户提供他愿意购买的商品 ID 列表。因此,POST 数据中的对象如下所示:

{
  assets: [
    {
       'product': 'd9d5044d-2284-4d15-aa76-2eee3675035b',
       'amount': 4
    },
    ....
  ]
}
Run Code Online (Sandbox Code Playgroud)

我正在使用以下票据/资产模型:

# Ticket
class Ticket(models.Model):
    uuid = models.UUIDField(default=uuid.uuid4, editable=False, unique=True)
    owner = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='tickets', on_delete=models.CASCADE)


# Assets
class Asset(models.Model):
    ticket = models.ForeignKey(Ticket, related_name='assets', on_delete=models.CASCADE)
    stock_item = models.ForeignKey(Stock, related_name='stock_item', on_delete=models.SET_NULL, null=True)
    amount = models.IntegerField(validators=[MinValueValidator(0)])
Run Code Online (Sandbox Code Playgroud)

序列化程序如下所示:

# Asset serializer
class AssetSerializer(serializers.ModelSerializer):

    class Meta:
        model = Asset
        fields = ('stock_item', 'amount')


# Ticket serializer
class TicketSerializer(WritableNestedModelSerializer):
    owner …
Run Code Online (Sandbox Code Playgroud)

python django django-models django-rest-framework

4
推荐指数
1
解决办法
2462
查看次数