所以我配置了Celery + RabbitMQ.一切正常.
添加--autoreload了celery -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开始任务.
它看起来像一个连接问题,但我不知道它是什么.
如果你可以提供帮助,请写信.
我需要了解 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。
那么......我该如何解决这个问题?任何帮助将不胜感激。
我正在{{ 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使得所有我需要做的就是传递一个变量,它会给我一个上下文只是为标题,而不是写出来的代码块的每一个观点?
我在从另一个 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() 调用是否有可能异步阻止对该行/对象的访问?
我的网站提供几乎静态的页面,并且没有用户登录等。
出于性能原因,我想完全禁用会话(因此 django 不会访问数据库以获取每个请求的会话)。
我django.contrib.sessions从 INSTALLED_APPS 中删除了,还有什么我需要做的吗?
我有一个模型和一个使用 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) 我有一个我正在阅读的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上,所以在运行值部分的任何帮助都将非常感激.
这很简单,但似乎没有提供。
基本上,如果我的网站是...
或非root用户安装
...我想django会知道这一点,并在模板中有一个常量。
我发现的解决方案涉及:
SITE_URL ={{ SITE_URL }}或其他方式在模板中访问它。不是很干
听起来不错,但是django不提供{{ GET_ME_THE_ROOT_URL }}参考吗?
抱歉,django已经训练我期待这样的好吃的东西。
只是说'如果我正在写一个框架,那是我要做的第一件事,除了在我的桌子旁边放一个小冰箱,里面装满了热钱包,还有一个微波炉,但距离很近但很安全。
如何在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一样吗?
我正在 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 ×10
django ×9
celery ×2
asynchronous ×1
chmod ×1
dictionary ×1
django-views ×1
heroku ×1
json ×1
linux ×1
rabbitmq ×1