我尝试了我能找到的一切,包括:
celery celerybeat可以在运行时动态添加/删除任务吗?
我从上面得到的是,如果我只使用芹菜和芹菜,我必须在添加/删除任务后重新启动芹菜.但如果我结合django-celery-beat,我就不必重新启动它.
我一步一步地遵循文档:
from celery import Celery
from celery.schedules import crontab
app = Celery('tasks')
app.config_from_object('celeryconfig')
app.conf.timezone = 'UTC'
@app.on_after_configure.connect
def setup_periodic_tasks(sender, **kwargs):
# Calls test('hello') every 10 seconds.
sender.add_periodic_task(10.0, test.s('hello'), name='add every 10')
# Calls test('world') every 30 seconds
sender.add_periodic_task(30.0, test.s('world'), expires=10)
# Executes every Monday morning at 7:30 a.m.
sender.add_periodic_task(
crontab(hour=7, minute=30, day_of_week=1),
test.s('Happy Mondays!'),
)
@app.task
def test(arg):
print(arg)
Run Code Online (Sandbox Code Playgroud)
我的celeryconfig
BROKER_URL = 'amqp://rabbit'
CELERY_RESULT_BACKEND = 'rpc://rabbit'
CELERY_RESULT_PERSISTENT = True
# …Run Code Online (Sandbox Code Playgroud) 这是我的表trans:
id // user_id // money // type // date
1 1001 20 1 2015-11-1
2 1001 50 1 2015-11-1
3 1001 50 2 2015-11-2
4 1001 50 2 2015-11-3
5 1002 10 2 2015-11-3
6 1002 20 2 2015-11-1
7 1002 70 3 2015-11-1
8 1003 80 1 2015-11-2
9 1003 10 1 2015-11-3
10 1003 20 1 2015-11-3
Run Code Online (Sandbox Code Playgroud)
我想输出像:
id // user_id // sum_money_1 // sum_money_2 // sum_money_3 // date
1 1001 10 10 20 2015-11-1
2 1001 …Run Code Online (Sandbox Code Playgroud) 我正在使用Django ORM进行数据查询,我在这个表中得到了近200万行.我试过了
app_count = App.objects.count()
Run Code Online (Sandbox Code Playgroud)
和
from django.db import connection
cursor = connection.cursor()
cursor.execute('''SELECT count(*) FROM app''')
Run Code Online (Sandbox Code Playgroud)
mysql slow_query日志给了我
时间:2017-04-27T09:18:38.809498Z
User @ Host:www [www] @ [172.19.0.3] Id:5
Query_time:4.107433 Lock_time:0.004405 Rows_sent:1 Rows_examined:0
使用app_platform; SET时间戳= 1493284718; SELECT count(*)FROM app;
这个查询花了超过4秒的avg,但是当我使用mysql客户端和mysql shell来做这个查询时
mysql> select count(*) from app;
+----------+
| count(*) |
+----------+
| 1870019 |
+----------+
1 row in set (0.41 sec)
Run Code Online (Sandbox Code Playgroud)
只需要0.4秒,10倍的差异,为什么以及如何改进它.
这是我的模特
class AppMain(models.Model):
"""
"""
store = models.ForeignKey("AppStore", related_name="main_store")
name = models.CharField(max_length=256)
version = models.CharField(max_length=256, blank=True)
developer = models.CharField(db_index=True, …Run Code Online (Sandbox Code Playgroud) 我有两个简单的模型,第一个是
class Post(models.Model):
user = models.ForeignKey("common.MyUser", related_name="post_user")
act = models.ForeignKey("activities.Act", related_name="post_act")
post_title = models.CharField(max_length=30, blank=True)
post_content = models.CharField(max_length=140)
post_thumb_url = models.URLField()
post_create_time = models.DateTimeField(auto_now=True)
Run Code Online (Sandbox Code Playgroud)
第二个是
class Comment(models.Model):
post = models.ForeignKey("post.Post", related_name="comment_post")
user = models.ForeignKey("common.MyUser", related_name="comment_user")
reply_id = models.IntegerField()
comment_content = models.CharField(max_length=140)
comment_create_time = models.DateTimeField(auto_now=True)
Run Code Online (Sandbox Code Playgroud)
每个帖子可能有一些评论。现在我想使用帖子 ID 获取每个帖子信息及其所有评论。例如:
api.example.com/post/?post_id=1(此贴有两条评论)并返回
{
"id": 26,
"user": 22,
"post_comment": [{
"reply_id": 12,
"comment_content": "How are you doing",
"comment_create_time": "2015-11-19",
},
{
"reply_id": 32,
"comment_content": "My name is Sun",
"comment_create_time": "2015-11-19",
}]
"post_title": …Run Code Online (Sandbox Code Playgroud) 我读了一些文章有关Unicode和UTF-8。
Unicode 标准描述了字符如何由代码点表示。代码点是一个整数值,通常以 16 进制表示。在标准中,代码点使用符号 U+12CA 表示,表示值为 0x12ca(十进制 4,810)的字符。Unicode 标准包含许多列出字符及其相应代码点的表格:
严格来说,这些定义意味着说“这是字符 U+12CA”是没有意义的。U+12CA 是一个码位,代表某个特定的字符;在这种情况下,它代表字符“ETHIOPIC SYLLABLE WI”。在非正式环境中,有时会忘记代码点和字符之间的这种区别。
总结上一节:Unicode 字符串是一系列代码点,它们是从 0 到 0x10FFFF(十进制的 1,114,111)的数字。该序列需要表示为内存中的一组字节(即 0 到 255 之间的值)。将 Unicode 字符串转换为字节序列的规则称为编码。
我想知道为什么我们必须将 U+12CA 编码为 UTF-8 或 UTF-16,而不是将 12CA 的二进制文件直接保存在磁盘中。我认为原因是:
Unicode 不是自同步代码,所以如果
10 represent A
110 represent B
10110 represent C
Run Code Online (Sandbox Code Playgroud)当我在磁盘中看到 10110 时,我们无法分辨它是 A 和 B 还是只是 C。
我对吗?