小编Car*_*ile的帖子

如何使用Content Provider实现复杂查询?

我问这个是因为我不太清楚如何使用Android内容提供商.我有一个包含8个表的数据库的子集,我需要创建复杂的查询来获取一些数据.我的内容提供商可以很好地处理简单查询 例如,我在PersonModel.java类上有一个表Person,我使用以下方法获取数据:

String [] projection = {PersonModel.C_FIRST_NAME, PersonModel.C_LAST_NAME};
Cursor cursor = context.getContentResolver().query(
            MyProvider.CONTENT_URI_PERSONS, projection, null,
            null, null);
Run Code Online (Sandbox Code Playgroud)

它完美无缺.

MyProvider上,我的每个表都有一堆CONTENT_URI常量.

public class MyProvider extends ContentProvider {
    MyDbHelper dbHelper;
    SQLiteDatabase db;


    private static final String AUTHORITY = "com.myapp.models";

    //Paths for each tables
    private static final String PATH_PROFILE_PICTURES = "profile_pictures";
    private static final String PATH_PERSONS = "persons";
    private static final String PATH_USERS = "users";
    ....

    //Content URIs for each table
    public static final Uri CONTENT_URI_PROFILE_PICTURES = Uri
        .parse("content://" + …
Run Code Online (Sandbox Code Playgroud)

java sqlite android android-contentprovider

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

如何在 Ruby/Faraday 中使用多线程发出持久 HTTP 请求?

我使用带有net-http-persistent适配器的Faraday来发出 HTTP 请求。

我想通过使请求异步执行来优化它们,但由于我需要持久连接,所以我不断收到错误,例如too many connections reset我认为这是由于我有多个线程创建新连接的事实。

我尝试将适配器更改为tyhoeus,但由于连接不是持久的,因此执行所有请求的最终结果并不符合预期。

我的目标是通过发出此 HTTP 请求将商品添加到购物篮中。如果没有持久连接,项目不会添加到购物篮中。

所以,我的问题是:

是否可以重用线程之间的连接来发出持久的 HTTP 请求?如果是这样,如何实现这一目标?

这是我的一段代码:

创建连接:

Faraday.new do |c|
        c.use :cookie_jar, jar: cookie_jar
        c.options.open_timeout = 5
        c.options.timeout = 10
        c.request :url_encoded
        c.response :logger, logger
        c.adapter :net_http_persistent do |http| # yields Net::HTTP::Persistent
          http.idle_timeout = 2
        end
      end
Run Code Online (Sandbox Code Playgroud)

创建线程并获取每个线程的结果

  result = []
  threads = []
  total_items = items.size

  items.each_slice(5) do |sliced_items|

    # Create a thread for a batch of 5 items and …
Run Code Online (Sandbox Code Playgroud)

ruby asynchronous http typhoeus faraday

6
推荐指数
0
解决办法
1963
查看次数

无法使用 Celery + Django 在 tasks.py 中导入模型

我想创建一个后台任务来更新特定日期的记录。我在 RabbitMQ 中使用了 Django 和 Celery。

我设法在使用此虚拟任务功能保存模型时调用了该任务:

任务.py

from __future__ import absolute_import
from celery import Celery
from celery.utils.log import get_task_logger

logger = get_task_logger(__name__)

app = Celery('tasks', broker='amqp://localhost//')


@app.task(name='news.tasks.update_news_status')
def update_news_status(news_id):
    # (I pass the news id and return it, nothing complicated about it)
    return news_id
Run Code Online (Sandbox Code Playgroud)

这个任务是从我的models.py 中的save() 方法调用的

from django.db import models
from celery import current_app


class News(models.model):
    (...)

    def save(self, *args, **kwargs):

        current_app.send_task('news.tasks.update_news_status', args=(self.id,))

        super(News, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

问题是我想在 tasks.py 中导入我的新闻模型,但如果我尝试这样:

from .models import News

我收到此错误: …

python django python-import celery

3
推荐指数
1
解决办法
5438
查看次数