我在我的 Django 项目中使用 Celery (celery==4.0.2)。问题是我无法让 Celery 登录到文件中。我什么都试过了。唯一有效的是在命令中指定文件:
celery worker -A realestate_scanner -l info --purge --logfile=logs/celery.log
Run Code Online (Sandbox Code Playgroud)
但问题是日志会变得非常大,所以我需要指定旋转记录器,并且我想在生产中运行工人并作为守护进程击败。
realestate_scanner/realestate_scanner/celery.py
from __future__ import absolute_import
import os
from celery import Celery
from django.conf import settings
# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'realestate_scanner.settings')
app = Celery('realestate_scanner')
app.config_from_object('django.conf:settings',)
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
Run Code Online (Sandbox Code Playgroud)
realestate_scanner/realestate_scanner/settings.py ...
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django_extensions',
'djmoney',
'storage',
'engineapp',
'presentation',
'import_export'
]
BROKER_URL = 'redis://localhost:6379'
CELERY_RESULT_BACKEND = 'redis://localhost:6379'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json' …Run Code Online (Sandbox Code Playgroud) 是否可以对Django's执行聚合函数RangeField?
假设我们有 3 个带有BigIntegerField price_range.
第一个对象: price_range = [10,5000]
第二个对象: price_range = [1,5000]
第三个对象: price_range = [100,9000]
这三个对象的结果Max和Min聚合将是:
min = 1 和 max = 9000
我试图聚集Max和Min这种方式:
MyModel.objects.aggregate(Min('price_range'),Max('price_range'),)
Run Code Online (Sandbox Code Playgroud)
这引发了错误:
ProgrammingError: function min(int8range) 不存在 LINE 1: SELECT MIN("app_mymodel"."price_range") AS "price_range__min" FROM "app...
我在转换timestamp为GMT. 据我所知,它timestamp总是及时的GMT,所以我期望datetime.fromtimestamp返回GMT或时区感知的日期时间,但它返回我的本地(布拉迪斯拉发/布拉格)日期时间。
import datetime
datetime.datetime.fromtimestamp(1566720000)
datetime.datetime(2019, 8, 25, 10, 0)
Run Code Online (Sandbox Code Playgroud)
但根据纪元转换器,它是
GMT:2019 年 8 月 25 日星期日上午 8:00:00
编辑:datetime.datetime.fromtimestamp(1566720000).tzinfo不返回任何内容,因此它不知道 tz 。
你知道问题出在哪里吗?
我对 Flask 很陌生。我在字典中开发一个简单的搜索应用程序,该应用程序在应用程序运行时保存在内存中。为了测试这个应用程序,我使用 Flask 框架,当我运行 *.py 文件时,它在本地主机上运行一个服务器。当我启动 Flask 脚本时,我可以在浏览器中看到我的网页并正确使用该应用程序。
if __name__ == '__main__':
setup()
app.run()
Run Code Online (Sandbox Code Playgroud)
现在,我想把它放在互联网上进行远程访问。我知道只需复制+粘贴它到某个支持 Python 的主机上的目录是行不通的。我将不胜感激如何使这项工作的任何建议。
我想,它应该保存在主机目录的某个地方,然后我应该启动应用程序 - app.run(我不知道在这里输入什么作为主机和端口)。或者还有其他方法吗?
我只想输入http://[some url where my app runs]并查看存储在烧瓶模板文件中的 html。
我有全局变量的问题.它返回错误
search = Search.Search(pattern,b)
NameError: global name 'b' is not defined
Run Code Online (Sandbox Code Playgroud)
但我已经定义了这个全局变量.我试着把它放到搜索功能中.我认为在Windows上没有问题.我正在尝试在Linux/Unix上运行这个程序.
您对如何避免此错误有任何建议吗?
# -*- coding: utf-8 -*-
from flask import Flask
from flask import request
from flask import render_template
import Search
import B
app = Flask(__name__)
global b
@app.route('/')
def my_form():
return render_template('my-form.html')
def setup():
global b
b = B.B()
@app.route('/', methods=['POST'])
def search():
global b
from time import time
pattern = request.form['text']
...
se = Search.Search(pattern,b)
...
...
...
app.debug=True
if __name__ == '__main__':
setup()
app.run()
Run Code Online (Sandbox Code Playgroud) 由于我经常使用相同的try-catch块,所以我决定创建一个自动执行的装饰器.
def tryexc(func):
@wraps(func)
def wrapper(self, *args, **kwargs):
try:
func(self, *args, **kwargs)
except Exception as e:
mLib.log('EXCEPTION RAISED')
mLib.log('ARGS:\n'+'\n'.join(str(x) for x in args))
mLib.log(str(e))
mLib.log(traceback.format_exc())
return wrapper
Run Code Online (Sandbox Code Playgroud)
它在大多数情况下都能正常运行,而不是在方法中使用yield时.
class test_class():
def __init__(self):
self.text = 'TEST TEXT'
@tryexc
def x(self,a):
print self.text
# yield self.text
@tryexc
def y(self,a):
print list(self.x(5))
test_c = test_class()
test_c.y(5)
Run Code Online (Sandbox Code Playgroud)
当yield self.text被注释掉,一切工作正常.文本已打印.但是当没有评论该行时,它会捕获异常.
print list(self.x(5))
TypeError: 'NoneType' object is not iterable
Run Code Online (Sandbox Code Playgroud)
我不是很喜欢装饰,所以我很感激任何建议.list(self.x(5))在我看来应该是['TEST TEXT'].
我试图找到一种方法,怎么分不清Django哪里static文件,如css存储。问题是它可能找不到static文件夹。我已经设置了settings.py文件,但它没有帮助。
设置.PY:
STATIC_URL = '/static/'
INSTALLED_APPS = (
...
'django.contrib.staticfiles',
)
Run Code Online (Sandbox Code Playgroud)
BASE.HTML:
...
...
<title>Rozcestník</title>
<!-- Bootstrap core CSS -->
{% load static %}
<link href="{% static "css/bootstrap.min.css" %}" rel="stylesheet">
...
Run Code Online (Sandbox Code Playgroud)
问题出在哪儿?
我很好奇是否可以将函数f(x,y)的返回值附加到例如list中.
所以我有这个:
平行:
def download_unit_LVs(self, cislo_uzemia):
pool = Pool(number_of_workers)
for cislo in cisla:
pool.apply_async(self.download_cislo, args=(cislo_uzemia,cislo))
pool.close()
pool.join()
self.manager.commit()
Run Code Online (Sandbox Code Playgroud)
这是我运行方法self.download_cislo并行的方法,但问题是,它返回一个我必须附加到结果列表的值.
怎么做?
顺序:
def download_unit_LVs(self, cislo_uzemia):
results = []
for cislo in cisla:
results.append(self.download_cislo(cislo_uzemia,cislo))
self.manager.commit()
Run Code Online (Sandbox Code Playgroud) 是否可以设置Django Admin页面以显示哪个用户在哪个组中?是否可以使用Django Admin页面将用户添加到组中?如果有,怎么样?
现在,我正在以编程方式添加客户customers group和卖家sellers group,但我在管理中看不到任何信息.
这是我的注册view:
def register_customer(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
customer_registration_form = forms.CustomerRegistrationForm(request.POST)
if form.is_valid() and customer_registration_form.is_valid():
new_user = form.save()
new_customer_profile = UserCustomerProfile(user=new_user)
new_customer_profile.save()
customers_group = Group.objects.get(name='Customers')
new_user.groups.add(customers_group)
return render(request, 'registration/complete.html')
else:
#handle errors
customer_registration_form = forms.CustomerRegistrationForm()
form = UserCreationForm()
return render(request, "registration/register.html",
{'form': form, 'customer_registration_form': customer_registration_form})
Run Code Online (Sandbox Code Playgroud) 我正在尝试在Django中创建一个"删除帐户"功能.我用DeleteView它来做这个目的.
问题是在调用此视图后,Django引发:
Request Method: GET
Request URL: http://127.0.0.1:8000/profiles/delete-account/
Django Version: 1.11.7
Exception Type: TemplateDoesNotExist
Exception Value:
auth/user_confirm_delete.html
Run Code Online (Sandbox Code Playgroud)
我的看法:
class DeleteAccount(LoginRequiredMixin,DeleteView):
model = User
def get_object(self, queryset=None):
user = self.request.user
userprofile = user.userprofile
userprofile.prepare_to_delete_account()
return user
Run Code Online (Sandbox Code Playgroud)
为什么它会尝试渲染这个template以及为什么没有这样的模板,如果它被调用?
你知道怎么解决这个问题吗?
python ×8
django ×5
celery ×1
css ×1
datetime ×1
decorator ×1
django-admin ×1
django-orm ×1
django-views ×1
flask ×1
gmt ×1
logging ×1
nonetype ×1
pool ×1
postgresql ×1
python-2.7 ×1
sql ×1
web-hosting ×1
yield ×1